В распределенных компаниях с филиальной сетью нередко возникает ситуация, когда пользователи жалуются на то, что программа «зависла», а системные службы и стандартные средства мониторинга фиксируют штатную работу серверов. При этом сетевой пинг проходит без потерь, рабочие процессы rphost присутствуют в диспетчере задач, процессор не загружен, но информационная база перестает отвечать на запросы клиентов. Рассмотрим причины такого поведения платформы и подробно разберем практические способы организации сквозного мониторинга доступности 1С.
Если сервер не перегружен, но клиенты теряют связь с базой данных, проблема чаще всего кроется на стыке системных механизмов платформы, сети и СУБД. Проанализируем основные факторы, вызывающие подобное состояние:
rphost периодически проверяют наличие лицензий. При кратковременных сбоях сети, задержках DNS или исчерпании пула лицензий рабочие процессы встают в режим синхронного ожидания ответа от сервера лицензирования, не потребляя ресурсы процессора.Разберем вариант проверки отклика приложения с помощью сервисов, опубликованных на веб-сервере (IIS или Apache). Это позволяет внешней системе мониторинга (например, Zabbix) с заданным интервалом запрашивать состояние базы данных.
В конфигурациях на базе «Библиотеки стандартных подсистем» (включая «1С:Управление торговлей», начиная с редакций 11.3) присутствует встроенный SOAP-веб-сервис RemoteControl с методом GetCurrentState. Этот метод выполняет элементарную операцию проверки работоспособности сеанса и возвращает значение Истина. Данный сервис разрабатывался для интеграции с подсистемами ЦКК (Центр контроля качества), но его можно опрашивать любым внешним HTTP-клиентом.
Однако стандартные SOAP-сервисы требуют формирования и парсинга XML-пакетов, что создает лишнюю нагрузку при частом опросе. Более эффективное решение — создание собственного легковесного HTTP-сервиса, возвращающего статус без сложного контекста. Рассмотрим пример реализации простого обработчика для точки доступа /hs/healthcheck:
Функция ПроверитьДоступность(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Type", "text/plain; charset=utf-8");
Ответ.УстановитьТелоИзСтроки("OK");
Возврат Ответ;
КонецФункции
На стороне системы мониторинга Zabbix настраивается элемент данных типа «Веб-проверка» (Web Monitoring) или запуск скрипта через утилиту curl. Если в течение заданного таймаута (например, 3–5 секунд) сервер не возвращает код 200, система фиксирует инцидент и отправляет оповещение администратору.
Опрос HTTP-сервиса показывает только доступность веб-сервера и способность платформы выделить сеанс. Он не позволяет проверить работу пользовательского интерфейса, получение клиентских лицензий и прохождение полной сквозной авторизации. Для детальной проверки разберем запуск синтетического теста с помощью тонкого клиента 1С.
По расписанию (например, каждые 3–5 минут) из планировщика задач запускается отдельный процесс тонкого клиента под специальным технологическим пользователем. Запуск осуществляется через командную строку с ключами автоматизации:
1cv8c.exe ENTERPRISE /S "Server1C\TradeBase" /N "MonitoringRobot" /P "SecurePass123" /Execute "C:\Monitoring\HealthCheck.epf" /DisableStartupMessages
Внутри внешней обработки HealthCheck.epf в модуле формы или объекта реализуем проверку базовых операций информационной базы:
Процедура ПриОткрытии()
Попытка
// Проверяем чтение данных из СУБД
ТекущийНомер = Константы.НомерВерсииКонфигурации.Получить();
// Завершаем сеанс с признаком успешного выполнения
ЗавершитьРаботуСистемы(Ложь);
Исключение
// В случае ошибки записываем сообщение и аварийно завершаем процесс
ЗавершитьРаботуСистемы(Истина);
КонецПопытки;
КонецПроцедуры
Если процесс не успел завершиться в течение контрольного времени (например, 30–60 секунд), внешний скрипт принудительно убивает зависший процесс тонкого клиента и передает в Zabbix статус ошибки. Это дает стопроцентное подтверждение реальной недоступности базы со стороны пользовательских рабочих мест.
Чтобы понять, что именно происходит внутри зависшего кластера, подключим мониторинг служебных процессов без входа в саму информационную базу. Для этого используется служба удаленного администрирования ras и консольная утилита rac.
С помощью утилиты rac периодически запрашиваются ключевые метрики кластера:
rmngr: опрос списка кластеров и рабочих процессов подтверждает, что служба кластера не заблокирована внутренними ошибками.rphost: анализ показателей потребления памяти и количества соединений на каждый процесс.Параллельно в Zabbix рекомендуется снимать системные счетчики производительности (Performance Counters) операционной системы: число дескрипторов (handles) и потоков (threads) в процессах rphost.exe, а также счетчики дисковой очереди и сетевых подключений TCP Established.
Для минимизации риска зависаний настроим параметры кластера в консоли администрирования 1С:
Количество ИБ на один рабочий процесс = 1. Это гарантирует, что сбой или зависание одной базы данных не повлияет на работу соседних систем.Время засыпания пассивных сеансов (например, 1200 секунд) и Время завершения спящих сеансов (120 секунд), чтобы разорванные филиальные соединения не удерживали лицензии и блокировки.Допустимый объем памяти рабочих процессов и Интервал превышения допустимого объема памяти, чтобы исключить утечки оперативной памяти при интенсивной работе.EXCP (исключительные ситуации) и SDBL/TLOCK (длительные ожидания на блокировках) с порогом более 20–30 секунд для оперативного анализа причин зависания.Комбинация легкого HTTP-сервиса для частых проверок отклика и синтетического теста через тонкий клиент обеспечивает точный контроль доступности 1С и позволяет накапливать объективную статистику по филиалам без опоры на субъективные отзывы пользователей.