Многие технические специалисты сталкиваются с парадоксальной ситуацией: при переходе на современные компьютеры с Windows 10 производительность старых конфигураций 1С (на обычных формах в режиме толстого клиента) резко падает. В то же время на старых серверах или Windows 7 те же самые отчеты формируются в 5 раз быстрее. Разберем по шагам, почему это происходит и как настроить систему для максимально быстрой работы.
Рассмотрим типовую ситуацию: сервер на Windows Server 2016, база SQL, гигабитная сеть. На самом сервере отчет строится за 10 секунд, а на мощном клиенте с Windows 10 — за 50 секунд. При этом ни процессор, ни сеть, ни диски не показывают значимой нагрузки. Проанализируем ситуацию с помощью замера производительности (профайлера). Как правило, основная задержка происходит на методах формирования табличного документа, в частности, на функции ПроверитьПрисоединение().
Выясним причину такой разницы. Проблема кроется в двух плоскостях: сетевой стек Windows 10 и изменения в подсистеме печати. Толстый клиент 1С крайне чувствителен к задержкам передачи пакетов (latency), так как совершает тысячи мелких синхронных вызовов к серверу приложений.
В современных операционных системах Microsoft реализованы технологии, призванные снизить нагрузку на процессор при обработке больших потоков данных, но они могут «медвежью услугу» для «болтливых» протоколов 1С. Одной из таких технологий является Receive Segment Coalescing (RSC) — объединение сегментов при получении.
Сетевая карта «ждет», чтобы накопить несколько пакетов и передать их операционной системе одним блоком. Для передачи видео это отлично, но для 1С это означает лишние миллисекунды ожидания на каждом вызове. Выполним отключение RSC на клиентских машинах. Для этого запустим PowerShell от имени администратора и выполним следующие команды:
# Посмотрим список адаптеров и состояние RSC
Get-NetAdapterRsc
# Отключим RSC для всех адаптеров
Disable-NetAdapterRsc -Name "*"
Кроме того, рассмотрим влияние TCP Autotuning. Windows динамически меняет размер окна приема данных, что иногда приводит к искусственному ограничению пропускной способности в локальных сетях. Для стабилизации работы настроим параметры сетевого интерфейса через netsh:
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global chimney=disabled
netsh int tcp set global rss=enabled
Как показал анализ профайлера, огромная часть времени уходит на метод ПроверитьПрисоединение(). В режиме толстого клиента 1С при построении отчета постоянно обращается к драйверу принтера, чтобы рассчитать геометрию страницы (влезет ли колонка по ширине). В Windows 10 этот механизм работает медленнее из-за повышенных требований к безопасности и изменения архитектуры спулера печати.
Посмотрим на пример: если в системе по умолчанию выбран медленный сетевой принтер или принтер, который находится в «спящем» режиме, каждый вызов метода 1С будет ждать отклика от драйвера. Рекомендуем выполнить следующие действия:
Часто системные администраторы забывают о настройках энергосбережения сетевых карт. Разберем по шагам, как это влияет на 1С. Когда толстый клиент ждет ответа от сервера, сетевой адаптер может переходить в режим пониженного энергопотребления на доли секунды. Это вызывает микрозадержки.
Выполним настройку: в Диспетчере устройств найдите вашу сетевую карту, зайдите в Свойства -> Управление электропитанием и снимите галочку «Разрешить отключение этого устройства для экономии энергии». Также в настройках самого адаптера (вкладка «Дополнительно») отключите все параметры со словами Energy Efficient Ethernet или Green Ethernet.
Особое внимание уделим протоколу IPv6. Несмотря на то, что в сети может использоваться только IPv4, Windows 10 приоритезирует IPv6. Попытки разрешить имена через этот протокол могут приводить к таймаутам. Проанализируем ситуацию: простое снятие галочки в свойствах сетевого подключения часто недостаточно. Для полного отключения (если вы не используете IPv6 в своей инфраструктуре) лучше воспользоваться реестром:
# Путь в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
# Создать параметр DWORD (32 бита) с именем DisabledComponents и значением ffffffff
Windows Defender и другие антивирусные системы в Windows 10 гораздо агрессивнее проверяют трафик, чем в старых ОС. Для толстого клиента 1С 1cv8.exe является процессом, который генерирует аномально много мелких сетевых запросов, что может восприниматься защитой как подозрительная активность.
Добавим в исключения антивируса:
1cv8.exe и 1cv8c.exe.C:\Program Files\1cv8).1540, 1541, 1560-1591.Важно добавить именно процессы в список доверенных, чтобы антивирус не сканировал их сетевой стек в реальном времени.
Подводя итог, можно сказать, что «тормоза» 1С на Windows 10 — это не проблема производительности железа, а проблема задержек взаимодействия. Если переход на тонкий клиент невозможен в силу особенностей конфигурации (например, глубоко доработанная «Бухгалтерия 1.2»), то основным решением станет:
Эти меры позволяют сократить время выполнения отчетов в 3-5 раз, возвращая производительность к уровням локальной работы на сервере.