Файловая 1с тормозит по сети

Есть база 1с предприятие, лежащая на расшаренной папке. Гигабитная сеть и твердотельный винчестер положения не спасают. Работа нескольких пользователей по сети с одним и тем-же файлом (базой данных) включает механизм сетевой блокировки. Это заставляет систему тратить драгоценное время на выявление открытых сессий записи, и соответственно разрешение конфликтов.

Основные признаки работы блокировок:

    • процессор на сервере почти не занят

    • загрузка гигабитной сетевой карты меньше 5%

    • обращения к файловой системе чуть менее 10 мбайт/сек

    • быстрая работа пользователя с базой по сети в монопольном режиме и крайне медленная - при одновременной работе нескольких пользователей

    • быстрая работа пользователя с локальной базой на сервере и медленная - по сети

Варианты:

Если пользователь один, и он должен работать с базой обязательно по сети, то можно установить iSCSI соединение с помощью StarWind Free Edition (сервер и клиент можно после бесплатной регистрации скачать тут). Программа абсолютно бесплатна для частного использования. Для одновременной работы нескольких пользователей iSCSI не подходит! Не заработает!

Если нужна работа нескольких пользователей одновременно, то идеальным решением будет использование терминального подключения. Это самый быстрый и надежный способ. Особые умельцы "допиливают" не серверные ОС (Windows XP, Windows 7 Pro) так, что они работать начинают в терминальном режиме (хотя это является нарушением лицензии Microsoft).

В последнем случае, когда обязательно надо работать с базой по-сети, и вариант с терминальным доступом не подходит, то можно и нужно оптимизировать настройки сервера (в качестве сервера может выступать Windows 7 Home или Windows XP).

Вот рецепты оптимизации (описания значений тут, тут и тут):

- Удалить антивирус с серверной машины

- Поставить твердотельный (SSD) диск под базы данных, подключенный через SATAIII контроллер

- Перенесите файл подкачки на другой раздел (или винчестер)

- Проводим дефрагментацию винчестеров (например так)

- Отключить службу индексирования Windows

- В настройках плана электропитания выбираем план "Высокая производительность"

- Отключить IPv6 (оставляем только "Клиент для сетей Microsoft", "Служба доступа к файлам...", "Протокол интернета версии 4..."). Остальные протоколы и службы надо удалить.

- Сделать тюнинг сетевой карты:

Чтобы вручную отключить функции масштабирования размера приема и разгрузки TCP/IP в драйвере сетевого адаптера, выполните указанные ниже действия:

1. Выберите в меню Пуск пункт Выполнить, введите команду ncpa.cpl и нажмите кнопку OК.

2. Щелкните объект сетевого адаптера правой кнопкой мыши и выберите команду Свойства.

3. Нажмите кнопку Настроить и откройте вкладку Дополнительно.

4. В списке Свойства щелкните пункт Масштабирование размера приема, нажмите в списке Значение кнопку Отключить, а затем нажмите кнопку ОК.

5. В списке Свойства щелкните пункт Разгрузка TCP/IP, нажмите в списке Значение кнопку Отключить, а затем нажмите кнопку ОК.

6. Повторите действия 2 — 5 для каждого объекта сетевого адаптера.

- Оптимизировать файловую систему: запустить на диске с базой команду fsutil behavior set disablelastaccess 1

- В командной строке, запущенной от прав администратора запустите (одной строкой):

netsh int tcp set global autotuninglevel=disabled congestionprovider=ctcp ecncapability=enabled rss=disabled chimney=disabled

- Вносим изменения в реестр:

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]

"LargeSystemCache"=dword:00000001

"IoPageLockLimit"=dword:00010000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\parameters]

"MaxNumRssCpus"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\parameters]

"DisabledComponents"=dword:ffffffff

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\parameters]

"EnableWsd"=dword:00000000

"EnableDCA"=dword:00000001

"EnableTCPA"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]

"NetworkThrottlingIndex"=dword:ffffffff

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Psched]

"NonBestEffortLimit"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters]

"TCPNoDelay"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]

"Size"=dword:00000003

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mrxsmb\Parameters]

"OplocksDisabled"=dword:00000001

"CscEnabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]

"EnableOplocks"=dword:00000000

"IRPStackSize"=dword:00000028

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Filesystem]

"NtfsDisableLastAccessUpdate"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mup]

"DisableDFS"=DWORD:00000001

- Прописать в реестре

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{тут цифробуквенный код сетевой карты. его можно определить по IP адресу в значениях}

"TcpDelAckTicks"=DWORD:00000001

- Перезагружаемся.

- Проводим такие-же манипуляции на всех компьютерах, на которых работают пользователи 1с.

После этих манипуляций компьютер будет медленнее перекачивать большие объемы файлов по сети, больше забирать процессора на обработку сетевого трафика, но будут уменьшены задержки на обработку маленьких запросов, особенно с обработкой сетевых блокировок.

Данные настройки "заточены" под Windows 7, однако большинство будет работать и под Windows XP. Если у вас в качестве "сервера" работает Windows XP, то там надо дополнительно увеличивать максимальное количество полуоткрытых соединений. Для этого можно зайти сюда (в релизе Windows 7 и Windows Vista SP2 ограничения сняты).

Соответственно файлик реестра и скрипт настройки можно взять внизу страницы в аттаче. Там нет только настройки TcpDelAckTicks=1. Это значение надо прописать вручную.

Также для нормальной работы 1C нужно было обновить индекс полнотекстового поиска через меню "Операции" - "Управление полнотекстовым поиском" - "Обновить индекс" После выполнения данной операции быстродействие при работе с файловой базой увеличивается в десятки раз. И очевидно в БД 1С присутствуют индексы, которые не обновляются использованием стандартных процедур тестирования и восстановления.

Чтобы проверить производительность 1С 8.2 в сферическом вакууме, предлагаю в аттаче тест производительности 1С от Гилева. Описание тут.

Ну и как обычно предупреждение: Претензии не принимаются. Всё делаете на свой страх и риск!