Ситуация, когда информационная система 1С начинает "зависать" при выполнении элементарных операций, несмотря на низкие показатели общей загрузки серверных ресурсов, является классической проблемой для многих администраторов. Мы часто сталкиваемся с тем, что процессор загружен всего на 20-30%, оперативной памяти достаточно, а пользователи жалуются на ожидание открытия формы по 15-20 минут. В этой статье мы подробно проанализируем причины такого поведения системы и разберем по шагам методы оптимизации, начиная от настроек платформы и заканчивая конфигурацией серверного оборудования.
Разберем ситуацию на примере конкретного сервера: Xeon E5-2603 v2 с частотой 1.8 ГГц. Проанализируем, почему это является критическим фактором. Архитектура платформы 1С такова, что многие операции (особенно в клиент-серверном варианте на управляемых формах) выполняются последовательно в рамках одного потока. Это означает, что производительность всей системы напрямую зависит от мощности одного ядра процессора.
Частота 1.8 ГГц для современных конфигураций (таких как ERP, КА 2.5 или БП 3.0) крайне мала. Процессор просто не успевает обрабатывать сложные программные циклы 1С. При этом общая загрузка сервера будет выглядеть низкой, так как 1С не может эффективно распределить одну задачу на все ядра. Для комфортной работы 20 пользователей рекомендуется использовать процессоры с базовой тактовой частотой не ниже 3.0 ГГц. Если возможности заменить процессор нет, нам придется максимально оптимизировать программную среду.
Одной из главных причин "зависаний" является использование СУБД PostgreSQL со стандартными настройками. По умолчанию PostgreSQL сконфигурирован так, чтобы запуститься на любом "утюге", потребляя минимум ресурсов. Проанализируем основные параметры в файле postgresql.conf, которые необходимо изменить для ускорения работы 1С:
Рассмотрим функциональные опции самой платформы 8.3, которые создают фоновую нагрузку. Часто 1С виснет из-за того, что система пытается выполнить тяжелые регламентные операции в момент активности пользователя. Выясним, что можно отключить:
Для диагностики конкретных зависаний мы рекомендуем использовать Журнал регламентных заданий в консоли администрирования. Посмотрим, не запускается ли одновременно с работой пользователей "Расчет итогов" или "Слияние индексов".
Если 1С развернута внутри виртуальной машины (VMware или Hyper-V), проанализируем настройки ресурсов. Ошибки в виртуализации могут замедлить систему в разы:
Динамическая память (Dynamic Memory) — это главный враг SQL-серверов. Мы должны выделить серверу 1С и SQL статическую (Fixed) память. При динамическом распределении СУБД не может корректно построить план кэширования, что приводит к постоянным обращениям к диску.
Также проверим тип виртуальных дисков. Рекомендуется использовать только Fixed Size (Thick Provision) диски. Динамически расширяемые диски вызывают задержки в моменты записи данных, так как гипервизор вынужден тратить время на аллокацию нового места на физическом носителе.
Проанализируем неочевидный, но критически важный момент — режим энергосбережения. По умолчанию в Windows Server часто стоит план "Сбалансированный". Это заставляет процессор снижать частоту в моменты простоя. Из-за специфики 1С (короткие, но интенсивные всплески нагрузки), процессор просто не успевает "проснуться" и поднять частоту, выполняя задачу на минимальных 1.2 ГГц вместо возможных 1.8 ГГц.
Включим режим "Максимальная производительность" (High Performance) в панели управления сервером. Также важно зайти в BIOS физического сервера и отключить функции C-States и Intel SpeedStep, чтобы процессор всегда работал на своей максимальной частоте.
Разберем влияние сетевых протоколов. В современных ОС Windows приоритет отдается протоколу IPv6. Часто 1С пытается сначала разрешить имя сервера через IPv6, ждет тайм-аут и только потом переходит на IPv4. Это создает задержки при каждом обращении к серверу. Мы рекомендуем отключить IPv6 в свойствах сетевого адаптера.
Что касается антивируса, проанализируем список исключений. В него должны входить:
rphost.exe, rmngr.exe, ragent.exe, postgres.exe.%AppData%\1C\1cv8).*.1CD, *.1CL, *.log, *.lgp.Если проблема возникла после переноса базы, обязательно выполним регламентные операции на уровне СУБД. Выясним причину через выполнение команд в консоли PostgreSQL:
ANALYZE;
REINDEX DATABASE имя_вашей_базы;
Это обновит статистику планировщика и перестроит индексы, которые могли деградировать при переносе. Также не забудем про очистку серверного кэша 1С. Иногда старые записи в каталоге snccntx могут приводить к непредсказуемым зависаниям сеансов.
Резюме: Решение проблем с производительностью 1С — это всегда комплекс мер. В данном случае мы видим сочетание слабого процессора и стандартных настроек ПО. Переход на статическую память в виртуалке, настройка postgresql.conf и перевод сервера в режим максимальной производительности позволят существенно сократить время отклика системы даже на текущем оборудовании.