К статье
Практический материал

Администрирование · 11 мин

Кто грузит сервер 1С: поиск источника нагрузки

Как определить, кто грузит сервер 1С: консоль кластера, техножурнал, счётчики СУБД, типичные виновники нагрузки и способы её снизить.

Медленная работа 1С почти всегда сводится к одному вопросу: какой процесс, пользователь или запрос создаёт нагрузку. Без точного ответа администраторы начинают «лечить» сервер наугад — добавляют память, перезагружают службы, а проблема возвращается через час. Правильный подход — сначала локализовать источник: сервер 1С, СУБД или клиентские сеансы, и только потом принимать меры.

Нагрузку создают не только «тяжёлые» пользователи. Частыми виновниками оказываются регламентные задания, фоновые обмены, неоптимальные запросы в доработанных отчётах, блокировки в СУБД и даже антивирус на сервере. Каждый из этих сценариев диагностируется своим инструментом.

Ниже разобран практический порядок действий: от быстрой проверки через консоль кластера до анализа технологического журнала и счётчиков SQL Server или PostgreSQL. Материал ориентирован на администраторов и внедренцев, работающих с клиент-серверной 1С.

С чего начать: определяем, где именно нагрузка

Первый шаг — понять, какой узел страдает. Откройте диспетчер задач на сервере 1С и сервере СУБД (если они разнесены). Если процесс rphost потребляет много CPU и памяти — нагрузка идёт от исполнения кода и запросов через рабочие процессы кластера. Если загружен процесс СУБД (sqlservr, postgres), а rphost почти простаивает — проблема в запросах, индексах или блокировках на уровне базы данных.

Если оба сервера загружены умеренно, но пользователи жалуются на «подвисания», проверьте сеть между серверами и дисковую подсистему. Дисковая очередь выше 2–3 на длительном интервале — признак того, что СУБД упирается в чтение/запись, и «виноват» может быть не конкретный пользователь, а общая архитектура хранения.

rphost грузит CPUНагрузка от кода 1С или ожидания СУБД

Список сеансов в консоли кластера, техножурнал

СУБД грузит CPU/дискТяжёлые запросы, нехватка индексов, блокировки

Активные запросы в SSMS или pg_stat_activity

Оба сервера свободныПроблема в сети или на клиентах

Задержки ping, загрузка дисков, клиентские ПК

Консоль кластера: находим тяжёлые сеансы

Консоль администрирования серверов 1С — самый быстрый способ увидеть, кто нагружает систему прямо сейчас. Откройте ветку «Сеансы» нужной информационной базы и отсортируйте список по колонкам «Прочитано (текущее)», «Записано (текущее)» и «Время вызова СУБД (текущее)». Сеанс, который прочитал сотни мегабайт или держит длительный вызов СУБД, — основной кандидат на источник нагрузки.

Обратите внимание на колонку «Приложение»: она показывает, чем занят сеанс — тонкий клиент пользователя, фоновое задание, COM-соединение или веб-сервис. Если вверху списка регулярно оказывается фоновое задание, смотрите, какое регламентное задание оно выполняет и как часто запускается.

Полезно зафиксировать картину в динамике: обновляйте список несколько минут и отмечайте, какие сеансы стабильно растут по счётчикам. Разовый всплеск при проведении большого документа — норма, постоянный рост у одного и того же сеанса — повод разбираться с его содержимым.

Поиск виновника через консоль кластера
  1. 1
    Откройте консоль серверов 1С и ветку «Сеансы» нужной базы
  2. 2
    Отсортируйте по «Прочитано (текущее)» и «Время вызова СУБД (текущее)»
  3. 3
    Определите приложение и пользователя в верхних строках
  4. 4
    Снимите для подозрительного сеанса дамп вызовов или посмотрите связанное фоновое задание
  5. 5
    Повторите наблюдение через 5–10 минут и сравните рост счётчиков

Технологический журнал: когда консоли недостаточно

Консоль показывает моментальный срез, но не объясняет, какой именно запрос или участок кода создаёт нагрузку. Для этого включают технологический журнал (ТЖ) — логирование событий платформы через файл logcfg.xml, размещённый в каталоге conf сервера.

Настройте отбор по длительным событиям: например, фиксировать DBMSSQL или DBPOSTGRS длительностью более 1–2 секунд, а также события EXCP (исключения) и TLOCK/TDEADLOCK (блокировки и взаимоблокировки). Такой фильтр не перегружает диск и сразу показывает проблемные запросы с контекстом — именем пользователя, номером соединения и текстом запроса.

Для анализа собранных логов удобно использовать «Консоль технологического журнала» или обработки разбора ТЖ: они группируют события по длительности и показывают самые дорогие запросы за период. По тексту запроса легко понять, какая таблица и какой механизм конфигурации его порождает.

Диагностика на стороне СУБД

Если нагрузка сосредоточена в базе данных, смотрите активность штатными средствами СУБД. В Microsoft SQL Server откройте Activity Monitor в SQL Server Management Studio или выполните запрос к sys.dm_exec_requests с соединением к sys.dm_exec_sql_text — так видно выполняющиеся запросы, их длительность, ожидания и логины. Подозрительны запросы с большим количеством логических чтений и длительным ожиданием блокировок.

В PostgreSQL используйте представление pg_stat_activity: оно показывает активные запросы, их состояние и время старта. Долгие запросы в состоянии active и цепочки ожиданий Lock укажут на источник проблемы. Дополнительно полезно включить логирование медленных запросов через параметр log_min_duration_statement.

Отдельно проверьте блокировки: взаимоблокировки и длительные ожидания часто «грузят» сервер косвенно — сеансы висят, рабочие процессы заняты, пользователи видят зависания. В ТЖ 1С этим ситуациям соответствуют события TLOCK, TTIMEOUT и TDEADLOCK с указанием таблиц и соединений.

sql
SELECT r.session_id, r.status, r.wait_type, r.total_elapsed_time, t.text FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE r.session_id > 50 ORDER BY r.total_elapsed_time DESC;

Типичные виновники нагрузки

На практике список источников нагрузки повторяется от базы к базе. Чаще всего встречаются: регламентные и фоновые задания с слишком частым расписанием (обмены каждую минуту, пересчёт итогов днём), тяжёлые отчёты без отборов, которые пользователи запускают по всей базе за весь период, и обмены данными с другими системами через COM и веб-сервисы.

Вторая группа — проблемы конфигурации и инфраструктуры: запросы в цикле в доработках, отсутствие индексов по полям отборов, неактуальная статистика в СУБД, антивирус, сканирующий каталоги базы и техножурнала, а также нехватка памяти, из-за которой СУБД постоянно читает данные с диска вместо кэша.

Типичные ошибки
01
Перезагрузка сервера без диагностики — нагрузка возвращается, а причина остаётся ненайденной
02
Принудительное завершение «тяжёлого» сеанса без анализа — обрыв транзакции может оставить незавершённые операции и усугубить блокировки
03
Включение полного техножурнала без фильтров — переполнение диска и остановка работы
04
Добавление ресурсов серверу вместо оптимизации запроса — рост затрат без устранения причины

Что делать с найденным источником

Действие зависит от типа виновника. Тяжёлый отчёт — ограничьте обязательными отборами по периоду и организации, вынесите его выполнение в фоновое задание на нерабочее время. Частое регламентное задание — пересмотрите расписание: многие обмены достаточно выполнять раз в 5–15 минут или по событию, а не каждую минуту.

Неоптимальный запрос в доработке — передайте разработчику текст запроса из ТЖ с указанием таблиц и длительности; типовые решения — использование временных таблиц вместо вложенных запросов, отборы до соединений, проверка индексов. Проблемы СУБД — обновите статистику, проверьте план запроса, при необходимости добавьте недостающие индексы (для типовых конфигураций — через механизм индексирования 1С, а не напрямую в базе без необходимости).

После исправления обязательно проверьте результат: повторите наблюдение в консоли кластера и сравните счётчики сеансов, посмотрите, исчезли ли длительные события из ТЖ за тот же период суток.

Маршрут решения

Как выбрать действие

Тяжёлый сеанс — пользовательский отчёт без отборовОграничьте отборы, вынесите отчёт в фоновое выполнение
Вверху списка фоновое задание с частым расписаниемУвеличьте интервал запуска или перенесите на нерабочее время
Длительные события DBMSSQL по одной таблицеПроверьте индексы и передайте запрос разработчику на оптимизацию
Много событий TLOCK и TDEADLOCKИщите конкурирующие механизмы и пересматривайте порядок обращения к данным
СУБД загружена, а сеансы 1С лёгкиеАнализируйте планы запросов и статистику средствами СУБД

Профилактика: как не искать виновника вручную каждый раз

Разовая диагностика решает текущую проблему, но нагрузка имеет свойство возвращаться. Настройте постоянный мониторинг: счётчики производительности ОС (CPU, память, дисковая очередь), мониторинг активных сеансов и длительных запросов СУБД с оповещениями при превышении порогов.

Полезно вести реестр регламентных заданий с расписаниями и владельцами: при появлении новой нагрузки вы быстро определите, что изменилось. Также ограничьте права на запуск тяжёлых операций в рабочее время — например, закрытие месяца или полное перепроведение должны выполняться по согласованному графику.

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

Итог

Что важно запомнить

Источник нагрузки определяется по цепочке: консоль кластера показывает тяжёлые сеансы, техножурнал — конкретные запросы и блокировки, средства СУБД — планы и ожидания. Сначала диагностика, потом действие; устранив причину, проверьте результат повторным замером.

Частые вопросы

Можно ли просто завершить зависший сеанс пользователя?

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

Почему сервер тормозит, хотя ни один сеанс не выглядит тяжёлым?

Вероятно, нагрузка распределённая: множество мелких, но частых запросов суммарно перегружают СУБД. Такое встречается при массовой работе пользователей с неоптимальными формами списков или частых фоновых обменах. Здесь помогает анализ ТЖ по суммарной длительности событий, а не по отдельным длинным запросам.

Как понять, что виноват антивирус?

Характерный признак — периодические всплески нагрузки без привязки к действиям пользователей, особенно при обращении к файлам базы, журналу регистрации и каталогу ТЖ. Добавьте эти каталоги в исключения антивируса и сравните показатели дисковой активности до и после.

Файловая база тоже можно диагностировать этими способами?

Частично. Консоли кластера в файловом режиме нет, поэтому основной инструмент — технологический журнал на стороне клиента или веб-сервера, если база опубликована. Однако при росте числа пользователей файловый режим сам по себе становится источником нагрузки, и переход на клиент-серверный вариант часто является правильным решением.

Какой длительности запрос считать проблемным?

Единого порога нет: для интерактивной работы пользователя критичны запросы дольше 1–3 секунд, для фоновых заданий допустимы десятки секунд. Практичный подход — начать с фильтра ТЖ от 1–2 секунд и скорректировать порог по результатам: если записей слишком много, поднимите планку, если слишком мало и жалобы остаются — снизьте.

Можно ли найти виновника без доступа к серверу СУБД?

Да, но с ограничениями. Консоль кластера и техножурнал покажут сеанс, пользователя и текст запроса, однако план выполнения, ожидания и состояние индексов видны только на стороне СУБД. Если доступа нет, зафиксируйте данные ТЖ и передайте их администратору базы данных.