При очередной реорганизации инфраструктуры на казалось бы ровном месте вдруг наблюдается к концу рабочего дня просто чудовищная нагрузка на сервере 1С, на котором развернута пара десятков типовых бухгалтерских баз. Сервер 1С просто останавливается. Наблюдаются падения rphost-ов. Виновником оказалось фоновое задание. Задание выполняет загрузку данных из торговой системы. Порции небольшие, в каждой выгрузке 1-4 документа. В бухгалтерские базы данные попадают практически в реальном режиме. Поэтому настроено задание на частый запуск. И хоть самих данных для загрузки может и не оказаться, но задание все-равно ведь стартует. Бухгалтера в конце рабочего дня закрывают свои сессии, а фоновые задания работают.
На рабочем сервере в Performance Monitor сняты показания счетчика %Processor Time, см. на картинке.
Интервалы 1 и 3 соответствуют времени когда в каждой базе открыта пользовательская сессия, интервал 2 — работает только фоновое задание.
Да вот и объяснение: https://partners.v8.1c.ru/forum/message/1767219
"Если с информационной базой нет других соединений, то сеанс фонового задания появляется только после того, как будет полностью загружен контекст информационной базы. На это в нормальных условиях может уйти от 1 до 20 секунд. В течении этого времени у регламентного задания будет соединение, но не будет сеанса".
Понятно, что при загрузке контекста базы следует ожидать увеличения нагрузки. Вот только непонятно как сильно увеличится нагрузка, что в первую очередь деградирует - процессор, память, дисковая подсистема и где - сервер 1С, сервер СУБД, или все вместе. В конце концов может быть само задание виновато в нашей беде, не оптимально написано, и там все проблемы?
Провели небольшой эксперимент. На отдельном сервере 1С были развернуты 15 одинаковых типовых бухгалтерских баз. Никаких данных в базах нет. В каждой базе были отключены все регламентные задания за исключением одного, модуль которого заменили на пустую процедуру, это чтобы снять вопрос об оптимальности самого задания. Настроили расписание - выполнять каждые 10 секунд. Результат тот же - колоссальная нагрузка на процессор на сервере 1С в момент когда нет активных пользовательских сеансов. На сервере СУБД нагрузка практически отсутствует. Сеть не перегружена.
Похоже, можно делать выводы.
В первую очередь, что и подтолкнуло на самом деле написать эту заметку - теперь рекомендации по настройке фоновых и регламентных заданий коими полон интернет и которые обязательно услышишь от внедренцев, выглядят не совсем корректно. А именно. Часто рекомендуют отключить не нужные задания, и в первую очередь - убрать полнотекстовый поиск, кстати, очень удобная штука. Например здесь https://buhexpert8.ru/obuchenie-1s/administrirovanie-1s/1s-optimizatsiya-chto-delat-esli-programma-tormozit.html#i-2 или здесь http://fadmin.ru/vopros/pochemu-tormozit-1s-reglamentnye-zadaniya.
Посмотрим на список регламентных заданий, которые по умолчанию включены при развертывании новой бухгалтерской базы.
Задание |
Расписание |
Все обновления новостей |
каждый день; каждые 300 секунд, завершать через 600 секунд |
Все обновления 1СПАРК Риски |
каждый день; каждые 3600 секунд |
Все обновления 1СПАРК Риски (Область данных) |
каждый день; каждые 43200 секунд |
|
|
Извлечение текста файлов для поиска |
каждый день; каждые 85 секунд |
Обновление данных онлайн-сервисов регламентированной отчетности |
каждый день; каждые 3600 секунд |
Обновление задач бухгалтера |
каждый день; с 2:22:00 один раз в день |
Обновление индекса ППД |
каждый день; с 8:00:00 каждые 60 секунд |
Обновление проверок контролирующими органами |
каждый день; с 0:55:15 один раз в день |
Отложенное обновление ИБ |
каждый день; каждые 60 секунд, повторять после завершения через 60 секунд |
Отправка электронных документов |
один день; один раз в день |
Получение электронных документов |
один день; один раз в день |
Проверка контрагентов |
каждый 7-й день; один раз в день |
Проверка контрагентов на подключение к 1С-ЭДО |
каждый 7-й день; один раз в день |
Проверка кэша состояний ФНС |
каждый день; с 2:25:05 один раз в день |
Проверка новых электронных документов |
каждый день; каждые 1800 секунд |
Слияние индекса ППД |
каждый день; с 1:00:00 один раз в день |
Установка периода рассчитанных итогов |
каждый день, 5-го числа месяца; с 1:00:00 один раз в день |
Большей частью задание выполняется только один раз в день. Такое тяжелое задание как «Слияние индекса ППД» выполняется ночью. Вряд ли они могут явиться источником проблем в текущей работе пользователя. Но есть задания, которые стартуют довольно часто, в рабочее время, вот такие легкие задания и могут явиться источником проблем. Выделены синим цветом. Значит необходимо побеспокоится о том чтобы либо эти задания не «частили» когда нет активных пользовательских сеансов, либо следует активировать в такой базе пользовательский сеанс.
В падении производительности сервера 1С виноваты не сами задания, они выполняют полезную работу, и должны выполнять. Но задания нельзя оставлять «наедине» с базой. В противном случае может быть плохо серверу.
У себя нашли выход с использованием дополнительной базы, выполняющей роль диспетчера. В этой базе создали регламентные задания, свое для каждой рабочей базы. Задание выполняет простую работу - проверяет имеются ли данные для загрузки, если да, по COM вызывается задание на загрузку в соответствующей рабочей базе. Теперь нагрузка на сервер 1С просто никакая, значения %Processor Time в среднем 15-20. Исчезли падения rphost-ов. Но жизнь идет. К сожалению, пришлось отказаться через некоторое время от этого решения, поскольку во время загрузки решили выполнять дополнительные расчеты в бухгалтерской базе, вызовом соответствующего кода самой базы. Но не все по COM, как оказалось, бухгалтерия позволяет сделать. Пока держим активными сеансы в базах.
Вряд ли можно согласиться с утверждением, что это просто такая особенность платформы. Уж больно неприлично выглядит деградация сервера 1С при получении сеансовых данных на фоне того с какой легкостью эти данные отдает сервер СУБД.
Хотя наверное действительно особенность, неприятная. Впрочем, как не называй, учитывать следует.
Все проверялось на такой конфигурации:
Платформа 1С:Предприятие 8.3 (8.3.12.1529).
Конфигурация Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.65.80).
СУБД - Microsoft SQL Server Management Studio 12.0.5589.7.
Сервер 1С и сервер СУБД на разных машинах.
Конфигурации похожи - Intel(R) Xeon(R) CPU E5-4650v2 2,4 GHz, RAM - 32 GB.