Создаем счетчики производительности 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 Конфигурации 1cv8 Бесплатно (free)

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

13.03.2024    3644    spyke    28    

47

Быстродействие типовой 1С

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

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

13.03.2024    5617    vasilev2015    19    

38

Анализируем SQL сервер глазами 1С-ника

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

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

1 стартмани

15.02.2024    8492    170    ZAOSTG    74    

102

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    6799    doom2good    49    

65

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    9590    ivanov660    6    

76

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5434    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16705    skovpin_sa    14    

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

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

пы.сы. ссылка на Гитхаб не работает.
2. blackhole321 1305 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 1305 10.08.21 12:23 Сейчас в теме
(1)Ссылки починили :) Спасибо, что обратили внимание.
3. Yashazz 4727 10.08.21 10:20 Сейчас в теме
Вот. Спасибо за развёрнутый, спокойный, достойный ответ.

Плюсую.

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