Книга знаний

AdBlock убивает бесплатный контент
1С:Предприятие / Администрирование / Производительность

Ускорение 1С:Предприятие 7.7

В статье показаны наиболее часто встречающиеся проблемы 1С:Предприятие по части производительности, и приведены способы их решения.Автор статьи: romix | Редакторы: Гений 1С, Andreyyy
Последняя редакция №17 от 27.12.12 | История
URL: http://kb.mista.ru/article.php?id=136

Ключевые слова: Тормозит, 1С, медленно работает, долго, загружается, производительность, база, тормоза, сети, ускорить, работу, программы


100% загрузка процессора при ожидании транзакции



Когда один пользователь проводит документ, а другой - тоже пытается проводить документ, то этот второй пользователь загружает сервер непрерывным опросом блокировки. Проблема характерна для 1С:Предприятие 7.7 (DBF и SQL) и файл-серверной версии 8.0. Подробнее:
Книга знаний: Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки


Потеря производительности при подключении второго пользователя


При подключении второго (и последующего) пользователя к сетевой (не SQL!) базе 1С резко возрастает "торможение" 1С:Предприятие 7.7 при работе по сети. Причем, при отключении второго пользователя торможение сохраняется, до перезагрузки сервера.

Это особенность Windows NT/2000 - система не умеет кэшировать (сохранять в памяти) файлы при совместной многопользовательской работе по сети. Проблема описана в статье на диске ИТС (от фирмы 1С).
Эта особенность проявилась так же при использовании сетевого хранилища N4200PRO http://www.thecus.ru/7/?item=40. При тестировании RAID 1 форматировался в файловой системе Ext4.

Способы задействовать файловый кэш:
  • Установить сеть NetWare (где кэш работает нормально)

  • Установить программу SuperCache (для некоторых конфигураций обещается ускорение в несколько десятков раз)
  • Использовать жесткий диск со встроенным кэш-буфером  и повышенной пропускной способностью (обычно – относительно дорогие модели SCSI)



Другие варианты действий:
  • SQL-вариант 1С:Предприятие (при работе с базой SQL). Идеологически это самый правильный подход, однако, на практике он наталкивается на относительную дороговизну легальной установки, а также на ряд особенностей реализации по сравнению с DBF-вариантом 1С:Предприятие.

  • Сервер терминалов (по сети передается только изображение экрана, клавиатура и мышь).
  • http://infostart.ru/projects/?id=513 - DBEng32 - клиент/серверное использование DBFной версии 1С:Предприятие 7.7 (перенос на сервер CodeBase).


Разрастается журнал транзакций SQL


См. Книга знаний: Почему разрастается журнал транзакций - файл .LDF для MS-SQL

Долго стартует 1С


Проблема может быть связана с включенным антивирусом Касперского, который (в старых версиях) стремится проверить файл конфигурации (MD) 1С:Предприятие 7.7, причем, делает это несколько минут. Имеет смысл отключить проверку антивирусом файлов с расширениями MD, DD, DDS, DBF, CDX, LST, TMP.

Другой вариант – долго ищет ключ защиты. Нужно изменить файл NetHasp.ini, чтобы обращение шло к конкретному IP-адресу строго по протоколу TCP.
http://1c.alterplast.ru/faq/start.html

У Гения 1С был случай, когда 1С стартовала 2 минуты, потому что глобальный модуль был вынесен в текстовый файл и загружался через "#ЗагрузитьИзФайла".

Отключить сохранение времени последнего доступа к файлам


В NT это делается в параметрах устройства, в Windows 2000 – надо править реестр, а именно ключ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Значение NtfsDisableLastAccessUpdate нужно определить (его по умолчанию нет), тип DWord, установка в единицу (1) запрещает сохранение.
http://www.mista.ru/articles1c/hare/article.45.html

Кеширование при записи


В проводнике выбрать диск -> Properties -> Hardware -> Properties ->Policies установить галку Enable write caching on the disk
Только если есть UPS!

Временная папка пользователя на локальном диске


Промежуточные результаты запросов 1С сохраняет в виде файлов DBF во временной папке пользователя (которая указана в настройках пользователя в Конфигураторе 1С).
Достаточно указать c:\temp или аналогичную папку, а не папку на сетевом ресурсе, чтобы промежуточные результаты сохранялись и использовались быстрее.

Отключение QoS


Утверждается, что таким образом можно выключить резервирование 20% пропускной способности сети. Однако, ссылка утверждает, что резервирования нет, если приложения его не запрашивают.
http://msk.nestor.minsk.by/kg/2004/01/kg40117.html

Сетевая карта Realtek


См. поиск на этом форуме по ключевому слову Realtek. Дефектная или неполноценная сетевая карта на сервере может резко влиять на производительность сети.
http://www.forum.mista.ru/find.php
Pit советует: «На сетевухах - попробуй согласованно поиграться с режимом Full Duplex - Half Duplex...»
Сетевая 7.7. Тормоза при нескольких пользователях

Оптимизация распределения памяти Windows


Существует, как минимум, две стратегии распределения памяти и процессорного времени: на серверных машинах память и процессор отдаются под сетевые службы, а на клиентских машинах память и процессор отдаются визуальным пользовательским приложениям. Если машина работает одновременно и как клиент, и как сервер (что не рекомендуется!), имеет смысл произвести ее более тонкую настройку, например, при помощи утилиты ConfigNT.
http://1c.alterplast.ru/faq/saved.html
http://confignt.ixbt.com/

Дополнительные действия в XP


Необходимо выключать индексирование и Автовосстановление диска с базой 1С.
http://www.sinor.ru/~my1c/knowhow/XP&1C.htm

Удаление 1cv7.cfg


При разрастании этого файла до нескольких мегабайт наблюдается торможение при работе пользователей в 1С.
Что в файл 1Cv7.CFG в 7.7 записывается?

Использование терминального режима



Если узкое место системы - сеть, то использование терминального режима - на машине пользователей стоят только терминальные клиенты, вся работа происходит на сервере. Ходят слухи, что для имеет смысл делать терминалку только для файлового варианта DBF, не SQL.

(Замечание от romix'a: Не рекомендуют смешивать на одном физическом сервере SQL и терминал. Если же сервера разные, то очень даже можно. Единственная проблема - 100% загрузка процессора при ожидании блокировки - успешно решается патчем [2] и, возможно, будет исправлена в релизах 1С 7.7 выше 25-го.)

Аналогично, если требуется запустить серьезную обработку (перепроведение, переиндексация), лучше это делать на сервере - будет работать быстрее.

Использование компоненты TURBOBL


Ускоряет работы модулей 1С (ускоряет именно внутренний язык 1С), автор Orefkov.
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=2419

Снижение транзакционной нагрузки


Некоторым образом можно снизить транзакционную нагрузку, если рассчитывать все движения документа и сохранять их в списке значений (каждому элементу соответствует таблица значений с движениями) в момент, когда пользователь нажимает кнопку ОК или Провести в форме. А при проведении документа брать движения из этой таблицы и записывать их в базу. Можно предусмотреть такую фичу и в программном проведении документа, не только в интерактивном.
Достоинства: снижается длина транзакции.
Недостатки: на время расчета не блокируется база, что может повлечь за собой неточности в движениях, например спишется один и тот же резерв.


Отключение FlushFileBuffers для DBF-варианта



ildus
14 - 18.11.06 - 14:52
(13) самый простой способ включить кэширование записи для всех файлов- отключить вызов FlushFileBuffers(hFile). для этого для платформы 7.70.025 надо пропатчить файлик dbeng32.dll: ищем последовательность "50 FF 15 40 C0 11 1F", заменяем на "B8 FF FF FF FF 90 90". Теперь 1С не будет делать принудительный сброс файловых буферов на диск при каждой записи, т.е. запись на диск будет кэшироваться и сброс файловых буферов будет делаться средствами самой ОС (для NTFS каждые несколько секунд). Значительно уменьшается фрагментация файлов на диске и отпадает необходимость помещать временные файлы на RAM-диск. Этот метод дает очень хорошие результаты для локального и терминального режимов. Использовать это для сетевого режима не рекомендую, т.к. не тестил и вероятно может привести к повреждению базы.
более продвинутый способ - выборочное кэширование файлов. для этого делается перехват вызова FlushFileBuffers() с помощью ВК или подменой dll и проверяется хэндл файла- если например это временный файл или *.CDX базы, то файл кэшируется, если *.DBF базы, то происходит вызов FlushFileBuffers().


Трассировка ODBC (разрастается SQL.LOG)


Книга знаний: Источник тормозов - трассировка ODBC (разрастается файл sql.log)



См. также:
[1] Книга знаний: Перепроведение документов в 1С:Предприятие без блокировки других пользователей
[2] Книга знаний: Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки
[3] Книга знаний: Почему разрастается журнал транзакций - файл .LDF для MS-SQL

Книга знаний: Разрастается файл CDX и подвисает перенос ТА - способ лечения (DBF 7.7)
Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2011 | Mista.ru

Яндекс.Метрика