Подход «от общего к частному»
-
Жалобы пользователей необходимо превращать во внутренние метрики: «тормозит», «вылетает», «долго открывается» — стоит переводить в конкретные показатели.
-
Проблемы обычно охватывают всю цепочку: Сервер 1С → СУБД → сеть → клиенты.
-
Собирайте базовые метрики в обычном режиме: это бенчмарк, любые отклонения — сигнал к расследованию.
Часть 1: Ключевые метрики и их интерпретация
Мониторинг можно разделить на несколько уровней.
Уровень 1: Операционная система (Виртуальная машина / Физический сервер)
Это основа, без которой все остальное бессмысленно.
-
Процессор (CPU):
-
% Processor Time(загрузка): Устойчивая загрузка выше 80-85% — тревожный знак. Смотрите не на общую загрузку, а на ядра. 1С, как и многие СУБД, может быть не очень эффективно распараллеливать нагрузку, и одно "горячее" ядро может быть бутылочным горлышком. -
Processor Queue Length(очередь процессора): Если значение стабильно больше 2-3 на одно ядро, процессор не справляется с нагрузкой.
-
-
Память (RAM):
-
Available Mbytes(доступно МБ): Должно оставаться достаточно свободной памяти. Если значение постоянно мало (менее 10-15% от общего объема), система начинает активно использовать файл подкачки, что резко снижает производительность. -
Pages/sec(страниц в секунду): Показывает, сколько раз система обращалась к диску за недостающими страницами памяти или сбрасывала их на диск. Значение выше 100-200 говорит о нехватке оперативной памяти ("thrashing").
-
-
Дисковая подсистема (Disk):
-
Avg. Disk sec/ReadиAvg. Disk sec/Write(среднее время чтения/записи в секундах): Ключевые метрики! Для SSD значения должны быть менее 0.005-0.01 сек (5-10 мс). Для HDD — менее 0.015-0.02 сек (15-20 мс). Все, что выше, указывает на проблемы с дисками (перегружены, медленные, фрагментированные). -
Disk Queue Length(очередь диска): Средняя длина очереди. Должна быть меньше 2 на один физический диск.
-
-
Сеть (Network):
Bytes Total/sec: Общая нагрузка на сеть. Убедитесь, что не приближаетесь к пределу пропускной способности канала (особенно актуально для виртуальных машин).
Уровень 2: Процессы 1С-сервера (rphost*)
Это сердце вашей системы. Вся основная работа кластера выполняется в процессах rphost.
Где искать данные?
-
Журналы кластера серверов 1С: В каталоге кластера, в подпапках
rphost_...лежат текстовые логи. -
Консоль управления кластером (КУК): Показывает метрики в реальном времени.
-
Специализированные утилиты для анализа логов:
log_scanner(manticore),Panopticon,1C-LogExpert.
Ключевые метрики rphost:
-
Время выполнения вызовов (DBMS, TLock, Connect):
-
DBMS: Общее время, затраченное на взаимодействие с СУБД (выполнение запросов). Это самый частый "виновник" тормозов. -
TLock(Timeout Lock): Время ожидания захвата управляемых блокировок. Высокое значение указывает на конфликты между сеансами (например, одновременная попытка изменения одних и тех же данных). -
Connect: Время установки соединения с СУБД. Высокое значение может указывать на проблемы с сетью или нагрузкой на сервер БД. -
Duration: Общее время выполнения вызова. -
AvgCallTime,AvgDbCallTime: Среднее время вызова и среднее время вызова к БД. Мониторьте их динамику.
Как интерпретировать?
-
Если
DBMSсоставляет 80% и более отDuration— проблема почти наверняка в запросах к базе данных. -
Если высокий
TLock— нужно анализировать конфликтующие транзакции. -
Здоровое соотношение:
DBMS< 50-60% отDuration.
-
-
Память процесса (
Mem):-
Следите за потреблением памяти каждым
rphost. Утечки памяти в 1С — редкое, но возможное явление. Если процесс стабильно "съедает" все больше памяти и не отдает ее обратно (особенно после завершения рабочих процессов ночью) — это повод для глубокого анализа.
-
-
Количество вызовов (
Calls):-
Показывает активность. Резкий рост может объяснить повышение нагрузки.
-
Уровень 3: Сервисные процессы (ragent, rmngr)
-
ragent(агент кластера): Это "мозг" кластера. Он управляет работойrphostиrmngr. Если он "лег" или потребляет много ресурсов, весь кластер может стать неработоспособным. -
rmngr(менеджер кластера): Обрабатывает входящие соединения от клиентов и распределяет их по рабочим процессамrphost.
Что мониторить?
-
Факт их работы (процессы должны быть в памяти).
-
Потребление CPU и Memory (должно быть минимальным, обычно доли процента CPU и десятки МБ памяти).
Часть 2: Глубокий анализ с помощью rphost
и утилит
Шаг 1. Сбор логов
-
В консоли управления кластером увеличьте уровень логирования для рабочих процессов (хотя бы до "Ошибки", для диагностики — на "Информацию").
-
Логи будут появляться в папке кластера
\1C\1Cv8\logs\<cluster_id>\rphost_....
Шаг 2. Анализ с помощью log_scanner
(manticore)
Утилита log_scanner
— ваш лучший друг.
# Пример команды для получения общего отчета log_scanner.exe C:\1C\1Cv8\logs\my_cluster\rphost_1234\*.log --output=text # Поиск самых долгих вызовов log_scanner.exe *.log --template="Duration %Duration" --group="Context" --output=text --sort=sum-Duration # Анализ времени по типам (DBMS, TLock) log_scanner.exe *.log --template="DBMS %DBMS; TLock %TLock; Connect %Connect" --group="Context" --output=text --sort=sum-DBMS
Что искать в отчете:
-
Топ самых долгих вызовов: Это ваши "горячие точки". Смотрите на
Context— это часто имя выполняемой процедуры, функции или запроса. -
Вызовы с максимальным
DBMS: Это запросы, которые больше всего нагружают вашу СУБД. -
Вызовы с максимальным
TLock: Это операции, вызывающие наибольшие блокировки.
Шаг 3. Детальный разбор конкретного проблемного вызова
Найдя "тяжелый" вызов, откройте полный лог rphost
в любом текстовом редакторе. Найдите по контексту этот вызов. Вы увидите детальную раскладку:
-
Какие именно SQL-запросы выполнялись внутри этого вызова.
-
Сколько времени занял каждый запрос.
-
Время на операции блокировок.
Это прямой указатель для администратора СУБД: "Вот этот конкретный запрос выполняется 10 секунд, его нужно оптимизировать (добавить индекс, переписать)".
Часть 3: Анализ дампов памяти
Дамп памяти — это снимок памяти процесса в конкретный момент времени. Это тяжелая артиллерия, которая применяется когда есть подозрения на:
-
Утечки памяти (постоянный рост потребления
rphost). -
Подвешивание или аварийное завершение процесса.
-
Аномально высокое потребление CPU без видимых причин в логах.
Инструменты:
-
ProcDump(от Sysinternals) — для создания дампа. -
Debug Diagnostic Tool 2.0— комплексный инструмент от Microsoft, умеет и создавать дампы, и анализировать их, есть готовые "правила" для анализа утечек. -
WinDbg— мощный отладчик от Microsoft, требует высокой квалификации.
Пошаговый алгоритм:
-
Снятие дампа:
-
Находим PID проблемного процесса
rphostв Диспетчере задач. -
Используем
ProcDump:
-
# Снять дамп по PID, когда потребление памяти превысит 2000 МБ procdump -ma -m 2000 <PID> # Снять дамп немедленно procdump -ma <PID> C:\dumps\dump.dmp
-
Анализ дампа в DebugDiag:
-
Открываем дамп в DebugDiag.
-
Запускаем анализ по правилу "Memory Pressure Analysis".
-
Ищем "Анализ памяти" в отчете. Нас интересуют:
-
Какие типы объектов занимают больше всего памяти? (Часто это строки
System.String, массивы байт, или специфичные объекты 1С). -
"Paths to Root": Что удерживает эти объекты в памяти? Если ссылки на объекты идут от "корней" (например, статические переменные), это может быть причиной утечки.
-
Стек вызовов для аллокаций большого количества памяти может указать на проблемный код.
-
-
Что делать с результатами?
-
Если вы видите, что огромный объем памяти занят, например, данными, которые кэшируются в глобальном модуле, — это указание разработчикам пересмотреть механизм кэширования.
-
Если видна утечка в штатных механизмах 1С, возможно, стоит обновить платформу до более новой версии, где эта ошибка исправлена.
Мониторинг производительности 1С — это непрерывный итеративный процесс:
-
Собирайте метрики ОС и процессы 1С.
-
Анализируйте логи
rphostс помощьюlog_scannerдля выявления аномалий. -
Углубляйтесь в проблемные места: смотрите SQL-запросы, анализируйте блокировки.
-
Применяйте дампы памяти для диагностики самых сложных случаев, связанных с памятью и аварийными завершениями.
Такой системный подход позволит вам не гадать, а точно определять и устранять причины проблем с производительностью.