Почему файловая база 1С обновляется и работает медленно на мощном сервере по сравнению с обычным ПК?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Многие системные администраторы и разработчики «1С» сталкиваются с удивительным парадоксом. При переносе файловой базы «1С:Предприятие» с обычного пользовательского компьютера на мощный современный сервер под управлением Windows Server скорость выполнения ресурсоемких операций (таких как обновление конфигурации или групповое проведение документов) падает в несколько раз. Например, типичная база «1С:Бухгалтерия предприятия 3.0» на скромном домашнем компьютере с процессором Core i3 и Windows 7 обновляется за 6 минут, а на мощном сервере с процессором Core i7, 32 ГБ оперативной памяти и скоростным SSD под управлением Windows Server 2016 та же самая процедура занимает 24 минуты.

В этой статье мы подробно проанализируем причины этой технической «загадки», разберем по шагам скрытые механизмы работы серверных операционных систем и выясним, какие настройки необходимо изменить, чтобы заставить файловую «1С» работать на сервере на полную мощность.

Причина 1. Механизм дискового балансирования Fair Share (TSFairShare / DFSS) в сессиях RDP

Если пользователи работают с базами «1С» в режиме терминального сервера (RDP или RemoteApp), операционная система Windows Server по умолчанию активирует технологию распределения ресурсов — Dynamic Fair Share Scheduling (DFSS). Эта технология предназначена для того, чтобы один активный пользователь не мог монополизировать все ресурсы сервера и замедлить работу остальных коллег.

Система Fair Share контролирует три типа ресурсов: процессорное время, пропускную способность сети и дисковую активность (Disk Fair Share). Когда запускается обновление конфигурации «1С» (процесс, создающий колоссальную нагрузку на дисковую подсистему), служба Fair Share распознает этот процесс как угрозу стабильности системы. Она начинает искусственно вставлять микрозадержки в дисковую очередь этой терминальной сессии, «срезая» скорость записи на SSD. В результате мощное железо простаивает, а операция обновления растягивается на десятки минут.

Для оптимизации работы сервера под нужды «1С» эту функцию рекомендуется полностью отключить. Рассмотрим, как это сделать через системный реестр Windows:

  1. Откройте редактор реестра regedit от имени администратора.
  2. Перейдите в ветку реестра, отвечающую за дисковый балансировщик: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk
  3. Найдите параметр EnableFairShare и установите его значение в 0.
  4. Перейдите в ветку реестра, отвечающую за балансировку процессорного времени: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System
  5. Найдите параметр EnableCpuQuota и также установите его значение в 0.
  6. Перезагрузите сервер для применения настроек.

Причина 2. Энергосбережение процессора в режиме низкого общей загрузки

При анализе производительности администраторы часто отмечают, что во время медленного обновления базы загрузка центрального процессора на сервере не превышает 4–10%. Это создает ложное ощущение, что процессору хватает мощности. На самом деле файловая система «1С» выполняет операции обновления в один поток. Это значит, что в каждый момент времени вычислениями занято только одно ядро процессора из многих доступных на сервере.

Для серверной операционной системы общая загрузка CPU на уровне 4% является сигналом к тому, что сервер простаивает. Современные процессоры в сбалансированном режиме энергопотребления сбрасывают тактовую частоту ядер до минимума (например, с номинальных 3.6 ГГц до энергосберегающих 1.2 ГГц). В результате однопоточная задача обновления выполняется на крайне низкой частоте. На домашнем же компьютере обычно включен профиль высокой производительности, и процессор сразу работает на максимальной частоте.

Проанализируем ситуацию и настроим электропитание сервера:

  1. В операционной системе Windows Server перейдите в «Панель управления» -> «Электропитание».
  2. Переведите переключатель в режим «Высокая производительность» (High Performance).
  3. Дополнительно зайдите в настройки схемы электропитания, найдите пункт «Управление питанием процессора» и убедитесь, что минимальное состояние процессора установлено в 100%.
  4. Если есть доступ к BIOS/UEFI сервера, отключите энергосберегающие технологии процессора, такие как C-States, Intel SpeedStep или AMD Cool'n'Quiet. Это заставит процессор работать на стабильно высокой базовой частоте с активным Turbo Boost.

Причина 3. Политика кэширования записи на SSD (Write Caching)

Безопасность данных на Windows Server имеет наивысший приоритет. Если на сервере установлен обычный твердотельный накопитель (SSD) потребительского класса, у которого отсутствует аппаратная защита от внезапного отключения питания (конденсаторы Power Loss Protection — PLP), серверная ОС принудительно ограничивает или полностью отключает кэширование записи на этот диск.

При обновлении конфигурации или работе файловой базы «1С» совершает миллионы мелких транзакций и файловых операций, постоянно вызывая системную функцию сброса буферов на диск FlushFileBuffers. На домашней Windows 7 операционная система игнорирует некоторые жесткие требования безопасности и рапортует программе об успешной записи данных, когда они фактически еще находятся в быстрой оперативной памяти. На Windows Server без кэширования записи каждая транзакция вынуждает SSD физически перезаписывать ячейки памяти, из-за чего скорость случайной записи падает в десятки раз (до 1–3 МБ/с).

Рассмотрим, как проверить и изменить эту настройку (при условии, что у вас настроено резервное копирование и сервер подключен к надежному источнику бесперебойного питания):

  1. Откройте «Диспетчер устройств» в Windows Server.
  2. Разверните список «Дисковые устройства» и откройте свойства вашего SSD-накопителя.
  3. Перейдите на вкладку «Политика» (Policies).
  4. Установите флажок напротив пункта «Разрешить кэширование записей для этого устройства» (Enable write caching on the device).
  5. Если доступен пункт «Отключить очистку буфера кэша записей Windows для этого устройства» (Turn off Windows write-cache buffer flushing), оцените риски потери данных при сбое питания и при наличии надежного ИБП включите его для достижения максимальной скорости.

Причина 4. Расположение профиля пользователя и временных файлов

В процессе работы и обновления файловая база данных «1С» генерирует огромный объем временных файлов. Все они создаются во временном каталоге текущего пользователя операционной системы: %USERPROFILE%\AppData\Local\Temp а также в каталоге кэша метаданных: %USERPROFILE%\AppData\Local\1C

Если профиль пользователя терминальной сессии расположен на медленном сетевом диске (например, используются перемещаемые профили), на медленном HDD-накопителе или если на сервере настроено квотирование дискового пространства для папок пользователей, производительность «1С» упадет до критического уровня. Даже если сам файл базы данных 1Cv8.1CD лежит на самом быстром SSD, постоянное обращение к медленному системному диску с временными файлами сведет на нет все преимущества быстрого накопителя.

Выясним причину и исправим пути к временным папкам:

  1. Убедитесь, что папка профиля пользователя физически находится на быстром локальном SSD.
  2. Вы можете принудительно перенаправить временные папки TEMP и TMP для пользователя, под которым запускается обновление «1С», на выделенный быстрый диск. Для этого откройте свойства системы -> «Дополнительные параметры системы» -> «Переменные среды» и измените значения переменных TEMP и TMP на путь к быстрой локальной папке, например, C:\Temp_1C.

Причина 5. Агрессивная работа встроенного антивируса (Windows Defender)

Встроенный защитник Windows Server по умолчанию работает в разы агрессивнее своего аналога для домашних систем. При обновлении конфигурации «1С» создает тысячи временных файлов с расширениями .tmp, постоянно модифицируя файлы настроек .pfl и сам файл базы данных .1cd.

Антивирус перехватывает каждую операцию создания и изменения файла, блокируя доступ к нему со стороны процесса 1cv8.exe до завершения сканирования. Это приводит к возникновению огромных задержек при дисковом вводе-выводе.

Рассмотрим правила настройки исключений для стабильной работы «1С»:

  1. Откройте «Безопасность Windows» и перейдите в раздел исключений сканирования.
  2. Добавьте в исключения типы файлов по расширению: .1cd, .1cl, .tmp, .pfl.
  3. Добавьте в исключения по процессу исполняемые файлы платформы «1С»: 1cv8.exe, 1cv8c.exe.
  4. Добавьте в исключения по путям к папкам: каталог с файлами баз данных, а также каталоги временных файлов пользователей и шаблонов конфигураций:
    
    C:\Users\*\AppData\Local\Temp\
    C:\Users\*\AppData\Local\1C\
    C:\Users\*\AppData\Roaming\1C\
    

Причина 6. Патчи безопасности процессоров против уязвимостей Spectre и Meltdown

В операционных системах 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

Причина 7. Оптимизация настроек файловой системы NTFS

По умолчанию файловая система NTFS на Windows Server выполняет ряд дополнительных действий, которые увеличивают накладные расходы при активной работе с тысячами мелких файлов (что как раз происходит при обновлении конфигураций):

  1. Генерация коротких имен в формате 8.3 (NtfsDisable8dot3NameCreation): Система тратит ресурсы на создание альтернативных коротких имен для совместимости со старым ПО. Рекомендуется отключить эту функцию.
  2. Обновление времени последнего доступа к файлам (NtfsDisableLastAccessUpdate): При каждом чтении любого файла система производит запись на диск, обновляя атрибут времени последнего обращения. Это создает паразитную нагрузку на запись для SSD.

Для оптимизации NTFS запустите командную строку от имени администратора и выполните следующие команды:


fsutil behavior set disable8dot3 1
fsutil behavior set disablelastaccess 1

После выполнения команд потребуется перезагрузить сервер.

Резюме и план действий

Мы проанализировали комплекс скрытых факторов, влияющих на скорость дисковых операций файловой «1С» на серверных операционных системах. Для решения проблемы медленного обновления баз рекомендуем действовать по следующему плану:

  1. Проверить расположение временных папок пользователей и перенести их на быстрый SSD.
  2. Отключить механизмы дискового и процессорного балансирования TSFairShare в реестре.
  3. Установить схему питания «Высокая производительность» как в Windows Server, так и в параметрах BIOS сервера.
  4. Настроить исключения антивируса Windows Defender для процессов и расширений файлов «1С».
  5. Включить кэширование записи для диска SSD в диспетчере устройств Windows (при наличии бесперебойного питания).

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

← На главную