Почему тормозит 1С:ERP при закрытии месяца и как это исправить

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

Ситуация, когда при запуске регламентной процедуры закрытия месяца в 1С:ERP 2.4 работа всех остальных пользователей практически парализуется, является классической проблемой для высоконагруженных систем. Даже если аппаратные ресурсы сервера (процессор, память, диски) на первый взгляд кажутся свободными, пользователи могут наблюдать задержки при открытии списков и проведении документов, увеличивающиеся с 2 до 40 секунд. Разберем по шагам, почему это происходит и как настроить систему для комфортной совместной работы.

Анализ влияния лицензионных ограничений платформы 1С

Первым делом проанализируем лицензионные ограничения. Если вы используете лицензию на сервер 1С:Предприятие (ПРОФ), необходимо помнить, что один рабочий процесс rphost может использовать не более 12 ядер процессора. Рассмотрим важный нюанс: платформа считает именно логические ядра (потоки). Если на вашем сервере включена технология Hyper-Threading (HT), то 12 логических ядер превращаются всего в 6 физических.

Когда запускается расчет себестоимости, он максимально утилизирует доступные ему 12 потоков. В результате для работы других пользователей, сеансы которых находятся в этом же рабочем процессе, ресурсов практически не остается. Выясним причину «мнимого» благополучия в диспетчере задач: общая загрузка процессора может быть 50-60%, но это происходит потому, что один процессор (сокет) загружен на 100%, а второй простаивает, так как рабочий процесс 1С не может «перешагнуть» лимит ядер или неэффективно распределяет нагрузку между физическими сокетами.

Настройка многопоточности в 1С:ERP (Система линейных уравнений)

Одной из самых тяжелых операций при закрытии месяца является решение системы линейных уравнений (СЛУ) при расчете себестоимости. По умолчанию программа может пытаться использовать все доступные ресурсы, что и вызывает тормоза. Проанализируем настройки в самой 1С:ERP. Перейдем в раздел настроек параметров операций закрытия месяца и найдем параметры управления многопоточностью.

Разберем, какие значения стоит установить для стабилизации системы:

  1. Количество потоков при решении СЛУ: Не оставляйте значение "0" (автоматически). Установите конкретное число, например, 4 или 8, в зависимости от общего количества ядер. Это ограничит аппетит фонового задания и оставит ресурсы для интерактивной работы пользователей.
  2. Максимальное количество одновременно выполняемых потоков расчета партий: Рекомендуется установить значение в пределах 4-6.
  3. Точность решения СЛУ: Если расчет идет слишком долго (несколько часов), можно попробовать снизить точность до 0,1 или 0,01, если это допустимо вашей учетной политикой.

Рассмотрим пример того, как могут выглядеть настройки в протоколе расчета, если система перегружена:


- Количество потоков при решении СЛУ: 0 (авто)
- Максимальное количество одновременно выполняемых заданий записи: 5
- Использовать платформенный механизм решения СЛУ: Да

Смена "0" на фиксированное число — это первый шаг к устранению "фризов" всей базы.

Оптимизация настроек MS SQL Server

Работа СУБД напрямую влияет на отзывчивость 1С. Рассмотрим две важнейшие настройки Max Degree of Parallelism (MAXDOP) и Cost Threshold for Parallelism. Если MAXDOP установлен в значение "0", SQL Server может использовать все доступные ядра для выполнения одного тяжелого запроса (например, из процедуры закрытия месяца), что мгновенно блокирует доступ другим коротким запросам пользователей.

Выполним рекомендации экспертов по настройке SQL для 1С:

  1. Установим MAXDOP = 1. Это заставит каждый запрос выполняться в рамках одного потока, что предотвращает избыточные ожидания типа CXPACKET.
  2. Если вы все же хотите использовать параллелизм для тяжелых отчетов, установите MAXDOP равным 1/4 или 1/2 от количества ядер одного физического процессора (но не более 8) и обязательно измените Cost Threshold for Parallelism со стандартных 5 на 50.

Также проанализируем состояние базы TempDB. При расчете себестоимости ERP активно использует временные таблицы. Убедимся, что:

Разделение ролей сервера (RDP, 1С, SQL)

Посмотрим на ситуацию архитектурно. Если сервер терминалов (RDP), сервер 1С и SQL находятся на одной физической машине без виртуализации, они начинают жестко конкурировать за общие ресурсы: кэш процессора, шину памяти и дисковый ввод-вывод.

Проанализируем поведение системы: когда 1С начинает расчет, она активно использует процессор. В это же время RDP-сессии пользователей также требуют процессорного времени для отрисовки интерфейса. Даже при низкой общей загрузке ЦП, возникают микро-очереди, которые пользователь ощущает как "замирание" интерфейса.

Рекомендуемая стратегия:

  1. Вынести роль RDP на отдельный физический или виртуальный сервер. Это освободит ресурсы основного процессора для взаимодействия 1С и SQL.
  2. При использовании Shared Memory (общая память) для связи 1С и SQL (что возможно только при их нахождении на одном сервере), убедитесь, что этот протокол действительно используется. Проверить это можно SQL-запросом:

SELECT program_name, net_transport 
FROM sys.dm_exec_sessions AS t1 
LEFT JOIN sys.dm_exec_connections AS t2 ON t1.session_id=t2.session_id 
WHERE t1.program_name LIKE '%1C%'

Если в колонке net_transport вы видите Shared Memory, значит связь настроена максимально быстро.

Настройка электропитания и аппаратные нюансы

Часто причиной необъяснимых тормозов является энергосбережение. Разберем, как это влияет на 1С:ERP. Процессоры Xeon имеют базовую частоту и частоту Turbo Boost. Если в Windows установлен план электропитания "Сбалансированный", процессор постоянно "прыгает" между частотами, что создает задержки.

Необходимо выполнить следующие действия:

Обслуживание индексов и статистики

Проанализируем регламентные операции в SQL Server. Обновление статистики и перестройка индексов должны выполняться ежедневно. Однако закрытие месяца в ERP генерирует огромное количество записей во временные таблицы и меняет данные в регистрах себестоимости и партий. Стандартная статистика может устаревать прямо в процессе расчета. При критическом росте объема базы данных для облегчения регламентных процедур может выполняться многопоточная свёртка 1С:ERP, которая позволяет параллельно очистить старые записи регистров.

Убедитесь, что в свойствах базы данных SQL Server включена опция Auto Update Statistics. В некоторых случаях помогает принудительное обновление статистики для проблемных таблиц (регистры накопления СебестоимостьТоваров, ВыручкаИСебестоимостьПродаж) непосредственно перед запуском закрытия месяца.

Итоги и выводы

Тормоза при закрытии месяца в ERP — это комплексная проблема распределения ресурсов. Мы выяснили, что основными рычагами влияния являются:

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

← На главную