Почему значения моего счетчика производительности сбрасываются при завершении работы приложения?

#c# #performancecounter

#c# #performancecounter

Вопрос:

У меня есть веб-сервис, который создает собственные счетчики производительности в одном экземпляре. Когда пул завершает работу (или повторно использует / перезапускает IIS) и перезапускается perfmon, все мои счетчики int64 возвращаются к 0. Есть ли способ создать категорию и / или счетчики, чтобы они «выдерживали» завершение работы приложения?

Комментарии:

1. Почему вы хотите, чтобы это предполагаемое поведение было изменено? Когда вы вносите изменения в конфигурацию, это может отразиться на вашей производительности и поэтому не будет отображаться в счетчиках производительности, если вы их не сбросите. Объясните это, пожалуйста.

2. Это зависит от того, что вы отслеживаете. Я говорю о счетчике Int64, который увеличивается каждый раз, когда происходит определенное событие. И я вообще не хочу, чтобы этот счетчик сбрасывался на 0. Думайте об этом как об истории (журнале), а не о мониторинге в реальном времени.

Ответ №1:

Есть ли способ создать категорию и / или счетчики, чтобы они «выдерживали» завершение работы приложения?

Да, но только путем реализации счетчиков производительности с нуля с использованием Win32 API, а для компонента, который PerfMon (или remoting of perf mon) использует для считывания значений для отображения, это должен быть полностью машинный код.

На практике будет проще обеспечить собственное сохранение значений и установить начальные значения счетчиков при запуске (и это может сохраняться при таких вещах, как перезапуск компьютера, если это необходимо).