Как устранить резкое падение производительности в 1С:ЗУП 3.1 при клиент-серверной архитектуре

Системный администратор 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

Ситуация, когда информационная база 1С:ЗУП 3.1 начинает работать крайне медленно при нормальной скорости других баз (БП, ERP, ДО), — довольно распространенная проблема. Рассмотрим типичный случай: проведение документа ИзменениеПлановыхНачислений на 50 сотрудников занимает 4 минуты, а его отмена — 20 минут. При этом анализ технологического журнала указывает на длительные операции в секции SDBL и CommitTransaction. Разберем по шагам, как проанализировать и решить эту проблему.

Анализ технологического журнала и выявление узких мест

Проанализируем запись из технологического журнала (ТЖ), которую предоставил автор. Мы видим, что задержка происходит на этапе CommitTransaction при записи формы документа. Это критически важный момент. Длительная фиксация транзакции (десятки и сотни секунд) обычно сигнализирует об одной из трех проблем:

  1. Ожидание на блокировках: база данных ждет доступа к ресурсам, которые заняты другими процессами.
  2. Медленная дисковая подсистема: запись лога транзакций (ldf) не успевает за потоком данных.
  3. Тяжелые подписки на события: в ЗУП 3 при записи кадрового документа срабатывает множество механизмов пересчета и обновления регистров (взаиморасчеты, НДФЛ, плановые начисления).

Выясним причину, изучив настройки сервера и базы данных. Если проблема сохраняется даже при разворачивании бэкапа в новой среде, значит, причина кроется либо в самих данных базы, либо в специфических настройках СУБД, которые "подхватывают" эту базу.

Регламентное обслуживание MS SQL Server

Одной из главных причин внезапных тормозов является деградация индексов и неактуальная статистика. Разберем правильную схему обслуживания, так как стандартные рекомендации "из коробки" часто содержат ошибки, такие как использование SHRINK.

Почему нельзя делать SHRINK? Проанализируем операцию сжатия базы. Она физически перемещает страницы данных, что приводит к колоссальной фрагментации индексов (до 90-99%). Если после сжатия не выполнить полную реиндексацию, производительность упадет в разы.

Рассмотрим правильный алгоритм обслуживания, который необходимо настроить в SQL Server Management Studio (SSMS):

  1. Обновление статистики (Update Statistics): Это самая важная операция для ЗУП. Оптимизатор SQL строит план запроса на основе статистики. Если она устарела, SQL может выбрать "сканирование всей таблицы" вместо "поиска по индексу". Выполняйте ежедневно.
  2. Реорганизация и перестроение индексов:
    • Если фрагментация 5-30% — используем REORGANIZE (выполняется онлайн, не блокирует пользователей).
    • Если фрагментация > 30% — используем REBUILD (в стандартной версии SQL блокирует таблицы, лучше делать ночью).
  3. Очистка процедурного кэша: Иногда SQL "запоминает" плохой план запроса (Parameter Sniffing). Чтобы сбросить его, используем команду:

DBCC FREEPROCCACHE;
GO

Специфические настройки для 1С:ЗУП 3.1

Программа 1С:ЗУП 3 крайне требовательна к скорости работы одного ядра процессора и настройкам параллелизма. Посмотрим на показатели теста Гилева. Значение в 22 балла для процессора уровня Xeon Gold или E5-2650 v2 является критически низким. Это указывает на то, что сервер работает в режиме энергосбережения или неправильно настроен SQL.

Настройка MAXDOP: Для баз 1С крайне рекомендуется ограничивать максимальную степень параллелизма. В настройках сервера MS SQL (параметр Max Degree of Parallelism) установите значение 1. Это заставит SQL выполнять каждый запрос в рамках одного ядра, что предотвратит взаимные блокировки потоков (ожидания CXPACKET), которые часто вызывают тормоза при записи документов в ЗУП.

Очередь пересчетов: В ЗУП 3 существует механизм "Данные к расчету". Если в системе накопилось много невыполненных пересчетов, любая запись кадрового документа будет инициировать тяжелый анализ этих данных. Рассмотрим, как это проверить: перейдите в раздел Зарплата — Сервис — Пересчеты зарплаты. Если там находятся тысячи записей за прошлые периоды, их необходимо удалить. Это часто дает мгновенный прирост скорости проведения документов.

Влияние RLS и расширений конфигурации

Проанализируем ситуацию с правами доступа. Ограничение прав на уровне записей (RLS) в ЗУП 3 — это очень "дорогостоящая" операция для процессора. При проведении документа на 50 человек система проверяет права доступа к каждому сотруднику через сложные запросы к таблицам прав.

Попробуем диагностировать RLS следующим образом: Выполните проведение проблемного документа под пользователем с Полными правами. Если документ проведется за 10-15 секунд вместо 4 минут, значит, проблема в производительности RLS. В этом случае необходимо проверить в настройках (Администрирование — Настройки пользователей и прав), включен ли "Производительный режим" работы RLS.

Также стоит обратить внимание на расширения. Если в расширениях добавлены подписки на события ПередЗаписью или ПриЗаписи, они могут выполнять неоптимальные запросы в цикле. Для проверки временно отключите все расширения и замерьте скорость работы документа.

Режим электропитания сервера

Выясним, почему тест Гилева показывает низкие результаты (22 балла). Современные серверные процессоры имеют базовую частоту (например, 2.6 ГГц) и частоту Turbo Boost. Если в Windows Server или в настройках BIOS стоит режим Balanced (Сбалансированный), процессор не будет поднимать частоту для "коротких" запросов 1С. Обязательно установите режим "Высокая производительность" (High Performance). Это может поднять производительность на 30-50% без вложений в железо.

Итоги и рекомендации

Для решения проблемы "внезапных" тормозов в ЗУП 3.1 рекомендуем придерживаться следующего чек-листа:

  1. Выполните полное обслуживание SQL: Обновите статистику и выполните REBUILD индексов. Очистите процедурный кэш командой DBCC FREEPROCCACHE.
  2. Настройте SQL Server: Установите MAXDOP = 1 и убедитесь, что база tempdb разделена на несколько файлов (по количеству ядер, но не более 8).
  3. Очистите очередь пересчетов: Удалите неактуальные записи в регистре "Данные к расчету".
  4. Проверьте RLS: Запустите операцию под полными правами.
  5. Настройте электропитание: Переведите сервер в режим максимальной производительности.

Соблюдение этих шагов позволит вернуть нормальную скорость работы программы и значительно сократить время закрытия месяца для бухгалтерии.

← На главную