Введение
Операционная система Windows имеет богатые возможности для сбора всевозможных метрик производительности как самой системы, так и различных приложений и сервисов, работающих под ее управлением. К сожалению, в настоящее время платформа 1С:Предприятие, в отличие от таких продуктов, как MS SQL Server, не предоставляет штатных средств для работы с подсистемой мониторинга производительности ОС Windows. Поэтому, целью настоящей публикации является описание подхода, который позволяет собирать информацию о метриках 1С:Предприятие (на примере количества соединений и сеансов) штатными средствами ОС без привлечения сторонних инструментов, что по мнению автора, в некоторых случаях весьма полезно.
Программная работа со счетчиками производительности Windows
Ключевым элементом подсистемы мониторинга производительности ОС Windows является счетчик производительности (performance counter), который фактически является отражением соответствующей метрики (загрузка CPU, дисковая очередь, количество операций ввода-вывода и т.п.). Любое приложение или сервис может регистрировать свои собственные счетчики производительности и по мере необходимости присваивать им соответствующие значения, которые могут быть собраны подсистемой мониторинга производительности и/или просмотрены в утилите perfmon.
Поскольку платформа 1С:Предприятие не имеет штатных счетчиков производительности Windows, мы создадим и зарегистрируем собственные счетчики производительности и будем устанавливать их значения на основе данных, полученных от платформы. Для этого, воспользуемся штатным средством системы - PowerShell, а также стандартными классами .Net для работы со счетчиками производительности. С подробным описанием библиотечных классов можно ознакомиться, к примеру, по ссылке https://docs.microsoft.com/ru-ru/dotnet/api/system.diagnostics.performancecounter?view=net-5.0.
Регистрация счетчиков в системе
В качестве метрик производительности 1С:Предприятие, которые мы бы хотели собирать, для данного демонстрационного примера были выбраны - количество сеансов, а также количество соединений кластера 1С:Предприятие. Регистрация новых счетчиков в системе производится примерно следующим образом:
Регистрация выполняется один раз и требует административных привилегий.
Получение данных из 1С:Предприятие и установка значений счетчиков
Перед тем, как устанавливать значения счетчиков производительности, создадим соответствующие экземпляры объектов-счетчиков:
Для получения данных из 1С:Предприятие воспользуемся COM-объектом V83.Connector.
Соединение с кластером 1С:Предприятие можно осуществить нижеследующим образом:
Получение результатов и установку значений счетчиков можно реализовать нижеследующим образом:
Полная версия скрипта PowerShell реализующего описанный функционал расположена по ссылке https://github.com/jdeshin/1c-performance-counters.
Получение результатов
Для получения результатов в реальном времени, достаточно запустить скрипт из планировщика заданий (Task Scheduler) либо из пользовательской сессии на компьютере, где были зарегистрированы соответствующие счетчики. Причем, скрипт может выполняться на компьютере, отличном от компьютера, где развернут кластер серверов 1С:Предприятие, при соответствующей настройке строки подключения.
Заключение
Надеюсь, что настоящая публикация сократит вам некоторое количество времени и сделает анализ производительности платформы чуть более удобным.