Мониторинг нагрузки на сервер 1С: как определить, где возникает ограничение — в инфраструктуре, СУБД, сервере 1С или конфигурации
Производительность систем 1С — одна из самых частых тем в профессиональном сообществе. Когда пользователи жалуются на «тормоза», задача администратора — не просто увеличить мощность сервера, а точно определить, где именно возникает узкое место. Ошибка в диагностике ведет к бессмысленным затратам на обновление оборудования или переписывание конфигурации. Разберем пошаговый подход к мониторингу нагрузки, который позволит отделить проблемы инфраструктуры от проблем СУБД, сервера 1С и кода конфигурации.
Методология: с чего начинать диагностику
Любая диагностика начинается с измерения. Без цифр — это гадание. Первый шаг — сбор метрик с трех уровней: железо (CPU, RAM, диск), СУБД (SQL Server / PostgreSQL), сервер 1С (менеджер кластера, рабочие процессы). Только после этого можно переходить к анализу конфигурации.
Сбор базовых метрик инфраструктуры
На сервере Windows используйте PerfMon, на Linux — top, iostat, vmstat. Ключевые показатели:
- CPU — утилизация ядер, особенно в моменты пиковых запросов.
- RAM — доступная память, отсутствие свопинга.
- Диск —
Avg. Disk Queue Length(должен быть < 2 на диск),Latency(ms).
Примечание: если дисковая подсистема работает с задержкой >20-30 мс, это уже проблема. Для 1С на SQL Server критична скорость записи лога транзакций.
Мониторинг СУБД
Для Microsoft SQL Server используйте динамические представления:
-- Тяжелые запросы по времени выполнения
SELECT TOP 10
total_worker_time/execution_count AS avg_cpu_time,
total_elapsed_time/execution_count AS avg_duration,
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), st.text))*2
ELSE qs.statement_end_offset END) - qs.statement_start_offset)/2) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_worker_time DESC;
Для PostgreSQL — pg_stat_statements.
Анализ сервера 1С: кластер и рабочие процессы
Сервер 1С — это посредник между клиентом и СУБД. Его перегрузка часто маскируется под проблемы базы данных.
Инструменты мониторинга сервера 1С
Используйте встроенную консоль кластера (администрирование) или внешние утилиты:
// Пример получения данных о кластере через COM-соединение (псевдокод)
// Получить объект через реальный API ИТС
// Соединение = Новый COMОбъект("V83.AddIn");
// Соединение.Подключиться("http://localhost:1541");
// ДанныеКластера = Соединение.ПолучитьИнформациюОКластере();
// В реальности используйте Rac.exe или штатную оснастку.
Ключевые метрики:
- Количество активных сеансов.
- Загрузка рабочих процессов (RPH — Request Per Hour).
- Время ожидания в очереди (если > 1-2 сек — проблема).
Типичные ошибки настройки сервера 1С
Частая причина — недостаток рабочих процессов при большом числе пользователей. Рекомендуется 1 рабочий процесс на 8-10 активных сеансов, но не более 4-6 на сервер (иначе растут накладные расходы на переключение контекста).
Уточнение: точное число зависит от версии платформы и конфигурации. Для 1С:ERP 2.5 с тяжелыми отчетами может потребоваться 1 процесс на 5 сеансов.
Диагностика конфигурации: код и блокировки
Если инфраструктура и СУБД в порядке, проблема — в конфигурации. Самые частые «тормоза» — неоптимальные запросы и длительные блокировки.
Поиск тяжелых запросов
Используйте Технологический журнал (ТЖ) платформы:
// Настройка ТЖ в конфигурации (через меню Администрирование -> Настройки журнала регистрации)
// Пример строки для отбора:
// "Ttl: 5s" — запросы дольше 5 секунд
// "Dbmssql" — события СУБД
// "Excp" — исключения
// Включаем в файл настроек:
// > Ttl: 5s
// > Dbmssql
// > Excp
После сбора ТЖ анализируйте через АнализТЖ (входит в поставку ИТС). Ищите запросы с Duration > 3-5 секунд.
Блокировки: как найти виновника
Блокировки в 1С — норма, но длительные — проблема. Используйте отчет «Активные пользователи» или запрос к СУБД:
-- SQL Server: кто блокирует
SELECT
request_session_id AS spid,
resource_type,
resource_description,
request_mode,
request_status
FROM sys.dm_tran_locks
WHERE request_status = 'WAIT';
Практическое руководство: что делать прямо сейчас
Не ждите, пока система «упадет». Выполните чек-лист:
- Соберите базовые метрики за неделю (CPU, диск, память).
- Проверьте СУБД на наличие тяжелых запросов (см. SQL выше).
- Настройте Технологический журнал на 5-10 минут пиковой нагрузки.
- Проанализируйте ТЖ — найдите запросы с
Duration > 5s. - Проверьте блокировки — если есть длительные ( > 10 сек), ищите виновника.
Чек-лист для администратора
| Уровень | Метрика | Норма | Действие при отклонении |
|---|---|---|---|
| Инфраструктура | CPU | < 80% | Обновление или балансировка |
| Инфраструктура | Ди
Профессиональные решения для 1С и marketplace-интеграций — каталог отчётов и инструментов на витрине НОПи.
Перейти в каталог решений → |