Многие системные администраторы и разработчики «1С» сталкиваются с удивительным парадоксом. При переносе файловой базы «1С:Предприятие» с обычного пользовательского компьютера на мощный современный сервер под управлением Windows Server скорость выполнения ресурсоемких операций (таких как обновление конфигурации или групповое проведение документов) падает в несколько раз. Например, типичная база «1С:Бухгалтерия предприятия 3.0» на скромном домашнем компьютере с процессором Core i3 и Windows 7 обновляется за 6 минут, а на мощном сервере с процессором Core i7, 32 ГБ оперативной памяти и скоростным SSD под управлением Windows Server 2016 та же самая процедура занимает 24 минуты.
В этой статье мы подробно проанализируем причины этой технической «загадки», разберем по шагам скрытые механизмы работы серверных операционных систем и выясним, какие настройки необходимо изменить, чтобы заставить файловую «1С» работать на сервере на полную мощность.
Если пользователи работают с базами «1С» в режиме терминального сервера (RDP или RemoteApp), операционная система Windows Server по умолчанию активирует технологию распределения ресурсов — Dynamic Fair Share Scheduling (DFSS). Эта технология предназначена для того, чтобы один активный пользователь не мог монополизировать все ресурсы сервера и замедлить работу остальных коллег.
Система Fair Share контролирует три типа ресурсов: процессорное время, пропускную способность сети и дисковую активность (Disk Fair Share). Когда запускается обновление конфигурации «1С» (процесс, создающий колоссальную нагрузку на дисковую подсистему), служба Fair Share распознает этот процесс как угрозу стабильности системы. Она начинает искусственно вставлять микрозадержки в дисковую очередь этой терминальной сессии, «срезая» скорость записи на SSD. В результате мощное железо простаивает, а операция обновления растягивается на десятки минут.
Для оптимизации работы сервера под нужды «1С» эту функцию рекомендуется полностью отключить. Рассмотрим, как это сделать через системный реестр Windows:
regedit от имени администратора.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TSFairShare\DiskEnableFairShare и установите его значение в 0.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Quota SystemEnableCpuQuota и также установите его значение в 0.При анализе производительности администраторы часто отмечают, что во время медленного обновления базы загрузка центрального процессора на сервере не превышает 4–10%. Это создает ложное ощущение, что процессору хватает мощности. На самом деле файловая система «1С» выполняет операции обновления в один поток. Это значит, что в каждый момент времени вычислениями занято только одно ядро процессора из многих доступных на сервере.
Для серверной операционной системы общая загрузка CPU на уровне 4% является сигналом к тому, что сервер простаивает. Современные процессоры в сбалансированном режиме энергопотребления сбрасывают тактовую частоту ядер до минимума (например, с номинальных 3.6 ГГц до энергосберегающих 1.2 ГГц). В результате однопоточная задача обновления выполняется на крайне низкой частоте. На домашнем же компьютере обычно включен профиль высокой производительности, и процессор сразу работает на максимальной частоте.
Проанализируем ситуацию и настроим электропитание сервера:
100%.C-States, Intel SpeedStep или AMD Cool'n'Quiet. Это заставит процессор работать на стабильно высокой базовой частоте с активным Turbo Boost.Безопасность данных на Windows Server имеет наивысший приоритет. Если на сервере установлен обычный твердотельный накопитель (SSD) потребительского класса, у которого отсутствует аппаратная защита от внезапного отключения питания (конденсаторы Power Loss Protection — PLP), серверная ОС принудительно ограничивает или полностью отключает кэширование записи на этот диск.
При обновлении конфигурации или работе файловой базы «1С» совершает миллионы мелких транзакций и файловых операций, постоянно вызывая системную функцию сброса буферов на диск FlushFileBuffers. На домашней Windows 7 операционная система игнорирует некоторые жесткие требования безопасности и рапортует программе об успешной записи данных, когда они фактически еще находятся в быстрой оперативной памяти. На Windows Server без кэширования записи каждая транзакция вынуждает SSD физически перезаписывать ячейки памяти, из-за чего скорость случайной записи падает в десятки раз (до 1–3 МБ/с).
Рассмотрим, как проверить и изменить эту настройку (при условии, что у вас настроено резервное копирование и сервер подключен к надежному источнику бесперебойного питания):
В процессе работы и обновления файловая база данных «1С» генерирует огромный объем временных файлов. Все они создаются во временном каталоге текущего пользователя операционной системы:
%USERPROFILE%\AppData\Local\Temp
а также в каталоге кэша метаданных:
%USERPROFILE%\AppData\Local\1C
Если профиль пользователя терминальной сессии расположен на медленном сетевом диске (например, используются перемещаемые профили), на медленном HDD-накопителе или если на сервере настроено квотирование дискового пространства для папок пользователей, производительность «1С» упадет до критического уровня. Даже если сам файл базы данных 1Cv8.1CD лежит на самом быстром SSD, постоянное обращение к медленному системному диску с временными файлами сведет на нет все преимущества быстрого накопителя.
Выясним причину и исправим пути к временным папкам:
TEMP и TMP для пользователя, под которым запускается обновление «1С», на выделенный быстрый диск. Для этого откройте свойства системы -> «Дополнительные параметры системы» -> «Переменные среды» и измените значения переменных TEMP и TMP на путь к быстрой локальной папке, например, C:\Temp_1C.Встроенный защитник Windows Server по умолчанию работает в разы агрессивнее своего аналога для домашних систем. При обновлении конфигурации «1С» создает тысячи временных файлов с расширениями .tmp, постоянно модифицируя файлы настроек .pfl и сам файл базы данных .1cd.
Антивирус перехватывает каждую операцию создания и изменения файла, блокируя доступ к нему со стороны процесса 1cv8.exe до завершения сканирования. Это приводит к возникновению огромных задержек при дисковом вводе-выводе.
Рассмотрим правила настройки исключений для стабильной работы «1С»:
.1cd, .1cl, .tmp, .pfl.1cv8.exe, 1cv8c.exe.
C:\Users\*\AppData\Local\Temp\
C:\Users\*\AppData\Local\1C\
C:\Users\*\AppData\Roaming\1C\
В операционных системах Windows Server начиная с 2016 версии по умолчанию активны программные и микрокодовые заплатки против аппаратных уязвимостей процессоров Spectre и Meltdown. Эти патчи защищают систему, но существенно замедляют скорость так называемых «системных вызовов» (когда приложение запрашивает у ядра ОС доступ к дисковой системе или оперативной памяти).
Поскольку файловый движок «1С» совершает миллионы подобных обращений в секунду при обновлении базы данных, влияние этих патчей на скорость работы файловой «1С» на сервере может снижать производительность на 30–40%. На старых домашних системах (например, Windows 7) данные заплатки чаще всего либо не установлены, либо отключены.
Если безопасность внутренней сети сервера позволяет, администраторы могут временно или постоянно отключить защиту Spectre/Meltdown для повышения производительности дисковых операций. Для этого в реестре необходимо изменить следующие параметры:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"FeatureSettingsOverride"=dword:00000003
"FeatureSettingsOverrideMask"=dword:00000003
По умолчанию файловая система NTFS на Windows Server выполняет ряд дополнительных действий, которые увеличивают накладные расходы при активной работе с тысячами мелких файлов (что как раз происходит при обновлении конфигураций):
Для оптимизации NTFS запустите командную строку от имени администратора и выполните следующие команды:
fsutil behavior set disable8dot3 1
fsutil behavior set disablelastaccess 1
После выполнения команд потребуется перезагрузить сервер.
Мы проанализировали комплекс скрытых факторов, влияющих на скорость дисковых операций файловой «1С» на серверных операционных системах. Для решения проблемы медленного обновления баз рекомендуем действовать по следующему плану:
TSFairShare в реестре.Выполнение этих шагов позволит устранить искусственные ограничения серверной операционной системы и поднять скорость обновления и работы файловых баз «1С» до максимально возможного уровня, соответствующего мощности вашего аппаратного обеспечения.