В современных конфигурациях 1С, таких как Управление торговлей 11, ERP 2 или Комплексная автоматизация 2, пользователи часто сталкиваются с проблемой резкого снижения производительности сервера. Процессор (ЦП) нагружается на 100%, а в списке фоновых заданий отображается процесс Выполняется распределение расчетов с клиентами. Давайте разберем по шагам, почему это происходит и как оптимизировать работу системы.
Прежде всего, проанализируем, что это за процесс. В последних редакциях программ 1С реализован механизм онлайн-взаиморасчетов. В отличие от старых версий, где сопоставление платежей и накладных происходило только в конце месяца при выполнении регламентных операций, новый режим пытается поддерживать актуальность данных в реальном времени.
Когда менеджер проводит платежное поручение или отгрузку, либо когда бухгалтер открывает отчет Ведомость по расчетам с клиентами, система инициирует фоновое задание. Его цель — распределить суммы по документам согласно методу ФИФО. Если данных много или в цепочке документов есть ошибки, этот процесс становится «тяжелым» и забирает все ресурсы сервера.
Самая частая причина внезапных скачков нагрузки — запуск расчета в момент открытия отчетов пользователями. Рассмотрим подробнее, как изменить эту настройку в интерфейсе программы:
После снятия этого флага пользователи смогут формировать отчеты мгновенно. Однако стоит учитывать, что данные в отчетах могут быть неактуальными (не распределенными), пока не отработает регламентное задание.
Вместо того чтобы заставлять сервер «потеть» каждый раз при записи документа или открытии отчета, мы можем перенести эту нагрузку на время, когда сервер менее загружен. Для этого выясним причину частых запусков и настроим расписание.
Нам нужно убедиться, что включено регламентное задание Распределение расчетов с клиентами (или аналогичное для поставщиков). Рассмотрим алгоритм действий:
Распределение расчетов.Это позволит серверу распределять ресурсы более равномерно, избегая пиковых нагрузок в моменты активной работы пользователей.
Проанализируем ситуацию: почему распределение может длиться долго? Одной из скрытых причин является наличие измененного документа в «далеком прошлом». Если кто-то из сотрудников перепровел документ за прошлый год, алгоритм распределения при каждом запуске будет пытаться пересчитать всю цепочку взаиморасчетов от той даты до сегодняшнего дня.
Разберем, как найти такие проблемные места:
Расчеты с клиентами по документам. Если в нем есть записи с пустыми объектами расчетов или «зависшие» копейки, которые система не может закрыть, это будет зацикливать фоновое задание.Если вы используете клиент-серверный вариант работы, высокая загрузка ЦП часто связана с тем, что оптимизатор SQL-сервера строит неэффективный план запроса. Это происходит из-за неактуальной статистики в таблицах регистров взаиморасчетов.
Рекомендуем выполнить обновление статистики (UPDATE STATISTICS) для основных таблиц, участвующих в расчете. В базе данных SQL это обычно таблицы с именами, похожими на _AccumRgED21532 (расчеты с клиентами) и _AccumRgED21545 (расчеты с поставщиками).
Пример SQL-команда для обслуживания базы (выполняется системным администратором):
UPDATE STATISTICS _AccumRgED21532;
UPDATE STATISTICS _AccumRgED21545;
Это поможет СУБД быстрее обрабатывать сложные запросы по распределению ФИФО, что напрямую снизит нагрузку на процессоры серверного оборудования.
Важно помнить, что механизмы онлайн-расчетов постоянно совершенствуются. В версиях платформы ниже 8.3.14 и релизах конфигурации УТ 11.4.5 алгоритмы содержали ряд узких мест. В более поздних выпусках (начиная с 11.4.13) разработчики 1С существенно оптимизировали этот узел, добавив использование временных таблиц и снизив количество обращений к базе данных.
Посмотрим на ситуацию со стороны системных ресурсов: если у вас 25 пользователей на Intel Xeon E3-1226 v3 с 32GB ОЗУ, этого железа вполне достаточно для комфортной работы, если программные механизмы настроены верно. 100% нагрузка в данном случае — это сигнал о программном «зацикливании» или избыточности вычислений, а не о нехватке мощности.
Мы выяснили, что для устранения проблемы 100% загрузки ЦП фоновым заданием распределения расчетов, необходимо действовать комплексно:
Соблюдение этих рекомендаций позволит сделать работу системы 1С:Предприятие 8 стабильной, а отклики интерфейса — мгновенными.