Медленное формирование расчетных листков в конфигурации «Зарплата и управление персоналом» — одна из самых распространенных жалоб пользователей. Когда отчет по одному сотруднику формируется более 10–20 секунд на мощном серверном оборудовании, это сигнализирует о наличии проблем в программном коде, настройках сервера базы данных или конфигурации операционной системы. В этой статье мы детально разберем, как продиагностировать ситуацию и какие шаги предпринять для ускорения работы 1С.
Первым делом проанализируем ситуацию с точки зрения кода. Даже если отчет считается «типовым», в него могли быть внесены незначительные изменения, которые критически влияют на скорость. Для этого в режиме «Конфигуратор» или через «Отладку» в режиме предприятия запустим Замер производительности.
Разберем по шагам, как это сделать:
Как показывает практика, часто в модулях отчета обнаруживается «нетиповой» код. Рассмотрим пример ситуации, когда в запрос или цикл формирования данных была вставлена проверка прав доступа или получение дополнительных данных из регистров, которые не индексированы. После приведения кода к типовому виду время формирования может сократиться в несколько раз.
Проанализируем ситуацию, когда на тестовой машине отчет работает быстрее, чем на мощном сервере. Часто причиной «замедления» являются настройки энергосбережения. Современные серверные процессоры стремятся экономить энергию, снижая частоту ядер в моменты простоя или низкой нагрузки. Однако 1С — это система, требующая мгновенного отклика (Burst load).
Проверим следующие настройки оборудования:
Maximum Performance.Node Interleaving в BIOS.Выясним причину разницы в скорости между тестовым и рабочим сервером. В сообщениях форума упоминается, что на тестовой машине сервер приложений и SQL стоят вместе, и там отчет формируется быстрее (7 секунд против 12). Это объясняется использованием протокола Shared Memory.
Когда 1С и SQL-сервер находятся на одном физическом или виртуальном сервере, данные передаются через общую память, что практически исключает сетевые задержки. На рабочей системе взаимодействие идет через протокол TCP/IP, который вносит свои коррективы:
IPv6, и только после таймаута переходит на IPv4. Отключение IPv6 на серверах часто дает прирост скорости.Если код типовой и железо настроено верно, проанализируем состояние базы данных на уровне SQL. Расчетный листок обращается к тяжелым регистрам: Начисления, Удержания, Данные состояний сотрудников.
Рекомендуется выполнить следующие действия:
UPDATE STATISTICS [ИмяТаблицы];
DBCC FREEPROCCACHE;
Max Degree of Parallelism в значение 1. Это предотвращает избыточное распараллеливание простых запросов, которое в условиях 1С часто приводит к взаимным блокировкам и очередям.В конфигурации «Зарплата и управление персоналом» существует механизм автоматического отслеживания необходимости перерасчетов. Если в базе накоплено огромное количество записей в таблицах перерасчетов (регистры сведений Перерасчеты), система при формировании любого отчета по зарплате может пытаться их анализировать.
Рассмотрим порядок действий для оптимизации:
Напоследок проанализируем настройки сервера приложений 1С. Если на сервере работает один процесс rphost, в который «набились» сотни пользователей, производительность тяжелых отчетов будет падать из-за конкуренции за ресурсы внутри процесса.
Посмотрим на настройки в консоли администрирования:
.1cv8 и .sql, но и каталог временных файлов сервера Temp, а также папку кэша сервера srvinfo. Проверка антивирусом временных файлов, создаваемых при компоновке расчетного листа через СКД, — частая скрытая причина тормозов.Таким образом, для решения проблемы медленного формирования расчетного листка необходим комплексный подход: от ревизии доработанного кода до тонкой настройки сетевых протоколов и параметров SQL-сервера.