Ситуация, когда база 1С «летает» на основном компьютере, но безбожно тормозит на клиентском через сетевую шару, — это классика жанра. Проблема часто ставит в тупик: ресурсы компьютеров не загружены, сеть на 100 Мбит свободна, а простейшее действие занимает 12 секунд вместо половины. Разберем по шагам, почему это происходит и как заставить 1С работать быстро.
Многие системные администраторы совершают ошибку, глядя на загрузку сети. Если 1С потребляет всего 10% от 100-мегабитного канала, кажется, что запаса еще много. Однако файловая 1С работает по протоколу SMB (Server Message Block). Особенность движка 1С в том, что для выполнения одной транзакции (например, проведения документа) программа совершает тысячи мелких обращений к файлу .1CD.
Проанализируем механику: каждый запрос требует подтверждения от «сервера». Если задержка (Latency/RTT) в сети составляет даже 1-2 миллисекунды, то суммарно тысячи запросов превращаются в те самые 10-15 секунд ожидания. Процессор в это время простаивает, потому что он ждет ответа от сети. Это состояние называется I/O Wait. Таким образом, нам важна не ширина канала, а скорость отклика.
Рассмотрим наиболее надежный способ. Чтобы полностью исключить влияние сетевых задержек протокола SMB, необходимо перенести исполняемый процесс 1С на тот же компьютер, где лежит база данных. В этом случае по сети будет передаваться только «картинка» рабочего стола, а все обращения к файлу базы будут происходить локально на сверхвысокой скорости SSD.
Для реализации этого метода на Windows 7 (если это позволяет лицензионное соглашение и технические возможности) или Windows Server настроим службу удаленных рабочих столов. Пользователь запускает 1С внутри сессии RDP, и задержки исчезают, так как протокол SMB больше не участвует в передаче данных базы.
Если терминальный доступ невозможен, проанализируем состояние сетевого оборудования. Опыт показывает, что переход со 100 Мбит на 1 Гбит ускоряет файловую 1С в несколько раз, даже если объем передаваемых данных невелик. Это происходит потому, что гигабитные сетевые карты имеют более совершенные контроллеры и значительно меньшую латентность (время отклика).
Важные шаги при переходе:
Cat5e или Cat6, причем обжаты должны быть все 8 жил (4 пары).В современных версиях Windows (начиная с 7 и выше) реализованы механизмы SMB 2.0/3.0, которые включают агрессивное кэширование и блокировки (OpLocks). При совместной работе нескольких пользователей эти механизмы часто начинают конфликтовать, заставляя систему постоянно сбрасывать кэш и перечитывать данные заново.
Попробуем оптимизировать работу сетевого клиента через реестр. На клиентской машине выполним настройку параметров LanmanWorkstation. Для этого перейдем в ветку реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
Создадим или изменим следующие параметры (тип DWORD):
DirectoryCacheLifetime — установим в 0.FileNotFoundCacheLifetime — установим в 0.AppearanceCacheLifetime — установим в 0.Это заставит Windows быстрее обновлять информацию о файлах в сетевой папке, что критично для 1С.
Современные сетевые адаптеры пытаются разгрузить центральный процессор, выполняя часть задач самостоятельно. Однако драйверы Windows 7 часто некорректно обрабатывают эти функции для баз данных. Выясним, как их отключить для повышения стабильности.
Зайдем в «Диспетчер устройств» -> «Сетевые адаптеры» -> Свойства вашей карты -> Вкладка «Дополнительно». Рассмотрим параметры, которые следует отключить (Disabled):
Также выполним команду в консоли CMD от имени администратора для настройки автотюнинга TCP:
netsh interface tcp set global autotuninglevel=highlyrestricted
Или, в некоторых случаях, помогает полная деактивация:
netsh interface tcp set global autotuninglevel=disabled
Windows 7 по умолчанию отдает приоритет протоколу IPv6. При обращении к серверу по имени система сначала пытается найти IPv6 адрес, ждет таймаут и только потом переходит к IPv4. Это добавляет микрозадержки при каждом новом соединении.
Рекомендуем отключить IPv6 в свойствах сетевого подключения на обоих компьютерах. Кроме того, для надежности пропишем соответствие IP-адреса и имени «сервера» в файле hosts на клиентском компьютере:
C:\Windows\System32\drivers\etc\hosts
Добавим строку вида: 192.168.1.10 SERVER_NAME.
Если конфигурация позволяет (платформа 8.3.14+), рассмотрим использование сервера 1С уровня КОРП на 5 подключений (так называемый «мини-сервер»). Он стоит недорого, но переводит работу из режима «файловая база через шару» в режим «клиент-сервер». В этом случае клиентская 1С общается не с файлом по сети, а с процессом сервера, что на порядок эффективнее и безопаснее для целостности данных.
Проанализируем влияние антивирусного ПО. Часто антивирус на «сервере» проверяет каждый пакет, приходящий по сети, а антивирус на клиенте проверяет каждый считанный байт из сетевой папки. Обязательно добавим в исключения:
*.1CD, *.1CL.1cv8.exe.Подведем итог: если вы используете обычные формы, то работа через веб-сервер (IIS/Apache) вам не подойдет. Вашим приоритетом должен быть либо переход на RDP, либо радикальное снижение сетевых задержек через гигабитную сеть и тюнинг драйверов сетевых карт. Выполнив эти шаги, вы добьетесь сокращения времени отклика с 12 секунд до приемлемых показателей.