Создаем счетчики производительности Windows для 1С

09.08.21

База данных - HighLoad оптимизация

В статье описан подход, позволяющий создавать счетчики производительности Windows для 1С:Предприятие.

Введение 

Операционная система 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С:Предприятие, при соответствующей настройке строки подключения. 

 

Заключение 

Надеюсь, что настоящая публикация сократит вам некоторое количество времени и сделает анализ производительности платформы чуть более удобным. 

PowerShell счетчики производительности perfmon

См. также

HighLoad оптимизация Программист Платформа 1С v8.3 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    3151    ivanov660    34    

52

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    6462    ivanov660    12    

56

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    11158    Evg-Lylyk    63    

45

HighLoad оптимизация Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    5853    spyke    28    

51

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    8717    vasilev2015    20    

43

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

2 стартмани

15.02.2024    14252    281    ZAOSTG    87    

118
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4824 10.08.21 08:31 Сейчас в теме
Ничего удобного не вижу. И это не программная работа, это просто некие скрипты, с которыми малопонятно, что делать. Непонятно, как запустить конкретно для нужного кластера, как для группы кластеров, можно ли запускать с клиента, какие нужны права, нужен ли перезапуск кластера, сервиса, всей связки...

Программная работа - это код на языке 1С, работающий с PShell через СОМ. Это процедуры "ДобавитьСчетчик", "УдалитьСчетчик", это функция "ПолучитьЗначениеСчётчика". А вы что-то слегка не то предлагаете.

пы.сы. ссылка на Гитхаб не работает.
2. blackhole321 1314 10.08.21 09:30 Сейчас в теме
(1)
ссылка на Гитхаб не работает

Да, какая-то беда :(. Вы можете скопировать ссылку из текста статьи и перейти по ней. Есть подозрение, что это что-то с редиректом инфостарта. Будем посмотреть.
можно ли запускать с клиента

Да, можно. Я вроде написал, что можно запускать на компьютере, отличном от компьютера, где установлен сервер 1С. Это может быть и клиент.
нужен ли перезапуск кластера, сервиса, всей связки...

Перезапуска чего-либо не требуется. Регистрируете счетчики и указываете соответствующую строку подключения, вместо
tcp://localhost:1540
какие нужны права

Для получения информации от кластера 1С нужны права администратора кластера 1С.
Для записи значений счетчиков, никаких специальных прав не требуется.
Для чтения счетчиков производительности, аккаунт, из под которого запускаете perfmon должен быть членом группы Performance Monitor Users на компьютере, где они зарегистрированы (счетчики).
Если Вы настраиваете группы сборщиков данных, аккаунт из под которого они выполняются должен быть членом группы Performance Log Users на компьютере, откуда производится сбор данных.
Если Вы запускаете скрипт через планировщик заданий, аккаунт из под которого запускается задание должен иметь права logon as batch job (настраивается групповыми политиками).
Ну это все известная информация, которая есть в соответствующей документации.
как запустить конкретно для нужного кластера, как для группы кластеров

Модифицировать скрипт, выбрав нужный, можете добавить параметр и функцию, которая выведет список :)
И это не программная работа, это просто некие скрипты, с которыми малопонятно, что делать.

Программная работа - это код на языке 1С, работающий с PShell через СОМ. Это процедуры "ДобавитьСчетчик", "УдалитьСчетчик", это функция "ПолучитьЗначениеСчётчика". А вы что-то слегка не то предлагаете.

Да, Вы конечно можете делать и так, если Вам так удобнее. На вкус и цвет все фломастеры разные :)
6. blackhole321 1314 10.08.21 12:23 Сейчас в теме
(1)Ссылки починили :) Спасибо, что обратили внимание.
3. Yashazz 4824 10.08.21 10:20 Сейчас в теме
Вот. Спасибо за развёрнутый, спокойный, достойный ответ.

Плюсую.

Коллеги, у кого под рукой есть КИП/ЦУП, скажите, а там есть подобные возможности? И если да, какими средствами это сделано - через пауэршелл или иначе?
4. blackhole321 1314 10.08.21 10:35 Сейчас в теме
(3)Я думаю, в случае КИП/ЦУП нет необходимости в прослойках. 1С позволяет работать с COM объектами, что дает возможность получать данные и записывать их в ИБ.
5. Yashazz 4824 10.08.21 11:04 Сейчас в теме
(4) Так вот мне и стало интересно, как он "получает данные" - тоже через сом-овскую пауэршелл?
7. user1592279 10.08.21 14:21 Сейчас в теме
В КИП - соединение с кластером 1С может быть установлено, через RAS, COM или АгентКИП - специализированный компонент
8. sdf1979 207 10.08.21 16:01 Сейчас в теме
(7)
Если память не подводит - то на данный момент только RAS или Агент КИП. От COM отказались, как не кросс-платформенный метод.
Оставьте свое сообщение