Рано или поздно многие системные администраторы и специалисты 1С сталкиваются с парадоксальной ситуацией: файловая база данных «1С:Бухгалтерия предприятия 3.0» (или «Управление торговлей 11»), размещенная на современном производительном сервере с быстрыми SSD-накопителями, достаточным объемом оперативной памяти и мощным процессором, начинает работать крайне медленно. Самое примечательное, что тормоза наблюдаются даже тогда, когда в системе работает всего один пользователь. При этом другие ресурсоемкие приложения на сервере буквально «летают».
В этой статье мы подробно проанализируем причины этой проблемы, разберем физику процессов, происходящих внутри операционной системы Windows Server и платформы 1С:Предприятие, и пошагово реализуем комплекс мер по оптимизации, которые помогут вернуть вашей системе былую отзывчивость.
Прежде чем приступать к глубоким настройкам операционной системы, давайте проведем экспресс-диагностику самой базы данных и сервера. Нам необходимо исключить базовые ошибки логической целостности и убедиться, что проблема не вызвана повреждением таблиц БД.
Выполним следующие действия:
Как показывает практика и опыт участников обсуждения, классический запуск файловой 1С в терминальной сессии (RDP) через тонкий или толстый клиент создает колоссальную нагрузку на дисковую подсистему и оперативную память сервера. Дело в том, что при стандартном запуске каждый пользовательский процесс 1cv8.exe или 1cv8c.exe монопольно открывает файл базы данных 1cv8.1CD и активно обменивается с ним блокировками через создание временных файлов 1cv8.1CL.
Мы можем кардинально решить эту проблему, переведя пользователей на работу через локальный веб-сервер (например, Apache). В этом случае схема взаимодействия меняется:
1cv8.1CD обращается только один процесс — сам веб-сервер Apache.Рассмотрим по шагам процесс публикации базы на веб-сервере Apache:
Accounting), выберем тип веб-сервера (Apache 2.4) и укажем каталог на диске, куда будут записаны файлы публикации.http://имя_сервера/Accounting.Малоизвестная, но крайне коварная причина медленной работы 1С в терминальном режиме кроется в самой операционной системе Windows Server (начиная с версии 2008 R2 и выше). По умолчанию в системе включена функция Dynamic Fair Share Scheduling (DFSS).
Этот механизм призван динамически и равномерно распределять ресурсы процессора и дискового ввода-вывода между всеми активными RDP-сессиями. Как только один из пользователей запускает тяжелый отчет или проведение документов в 1С, служба Fair Share расценивает этот процесс как попытку монополизировать ресурсы сервера и принудительно «зажимает» производительность этой сессии, вызывая жуткие зависания интерфейса у этого пользователя.
Давайте отключим этот механизм через реестр Windows. Для этого создадим и применим следующий REG-файл:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System]
"EnableCpuQuota"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk]
"EnableFairShare"=dword:00000000
После внесения изменений в реестр необходимо обязательно выполнить перезагрузку сервера, чтобы изменения вступили в силу. Это позволит операционной системе отдавать максимум ресурсов процессора и диска тому процессу 1С, который в них нуждается в данный момент.
Обратим внимание на важную деталь, упомянутую в исходном обсуждении: серверная операционная система имеет разрядность x64, в то время как клиентское приложение 1С установлено в 32-битной версии (x86).
Любой 32-битный процесс в среде Windows (даже при наличии 16 ГБ или 128 ГБ физической оперативной памяти на сервере) имеет жесткое архитектурное ограничение на объем используемого адресного пространства — не более 2 ГБ (в редких конфигурациях — до 3 ГБ). Современная конфигурация «1С:Бухгалтерия 3.0» на управляемых формах с интерфейсом «Такси» чрезвычайно требовательна к оперативной памяти.
При активной работе пользователя 32-битный процесс 1cv8c.exe быстро упирается в этот лимит. В результате система начинает непрерывно сбрасывать неактивные данные из ОЗУ в файл подкачки на диске (свопинг), что сводит на нет скорость работы даже на SSD и вызывает микрофризы интерфейса. Решением является принудительный переход на 64-битный клиент 1С, который не имеет подобных ограничений и может использовать всю доступную оперативную память сервера для кэширования данных.
Файловая СУБД 1С работает преимущественно в однопоточном режиме. Это означает, что скорость выполнения большинства операций зависит не от общего количества ядер вашего процессора, а от тактовой частоты одного конкретного ядра, на котором выполняется текущая задача.
По умолчанию в Windows Server включена «Сбалансированная» схема электропитания, которая динамически снижает частоту процессора для экономии энергии. Когда пользователь нажимает кнопку в 1С, процессору требуется время (миллисекунды), чтобы поднять частоту до номинальной. В условиях постоянных коротких запросов к базе это приводит к сильным задержкам.
Для исправления ситуации выполним следующие настройки:
C-States, P-States, Intel SpeedStep или AMD Cool'n'Quiet. Это заставит ядра процессора постоянно работать на своей максимальной штатной частоте (например, 3,2 ГГц), обеспечивая мгновенный отклик 1С на действия пользователя.В файловом режиме работы все фоновые и регламентные задания выполняются непосредственно в сеансах активных пользователей. По умолчанию в конфигурации БП 3.0 включено огромное количество фоновых процессов, которые запускаются автоматически и перегружают систему. Особое внимание следует уделить Полнотекстовому поиску (ППС), который непрерывно сканирует базу для индексации, создавая огромную нагрузку на диск.
Давайте отключим неиспользуемые функции непосредственно в режиме «1С:Предприятие»:
При работе в терминальном режиме у каждого пользователя RDP в его профиле со временем накапливается огромный объем временных файлов и кэша метаданных 1С. Повреждение или чрезмерное разрастание этого кэша — частая причина индивидуальных зависаний интерфейса.
Рекомендуется регулярно очищать временные папки пользователей. Кэш 1С располагается по следующим путям в профиле каждого терминального пользователя:
%USERPROFILE%\AppData\Local\1C\1cv8\%USERPROFILE%\AppData\Roaming\1C\1cv8\Для профилактики вы можете настроить периодическое удаление подкаталогов с буквенно-цифровыми именами из этих папок при входе пользователя в систему или использовать параметр запуска базы /ClearCache в дополнительных параметрах запуска в окне выбора информационных баз 1С.