Назад | Перейти на главную страницу

Различные имена процессов в PerfMon для одного и того же PID

Я пытаюсь подтвердить наблюдаемое поведение или ищу помощь в определении моей проблемы.

При использовании монитора производительности для сбора данных о нескольких экземплярах одного и того же процесса одно и то же имя экземпляра связано с разными PID. В частности, глядя на \.NET CLR Memory()\Process ID и \Process()\ID Process ценности.

Я определил поведение с помощью процесса Microsoft Dynamics Nav Server, скопировал его на другой сервер и воспроизвел проблему на третьем сервере, используя процесс w3wp.

Это ожидаемое поведение?

Я ошибочно предположил, что оба значения будут одинаковыми?

Я предполагаю, что метрики .NET обрабатывают имена экземпляров иначе, чем другие метрики производительности, но я не нашел ничего задокументированного, подтверждающего эту теорию.


Фон и как дублировать

При попытке собрать данные монитора производительности для отправки в нашу систему мониторинга (Zabbix). Из-за того, как PerfMon обрабатывает несколько экземпляров того же процесса я использую сценарий Powershell для преобразования понятного имени в имя экземпляра через PID. Затем я использую имя собранного экземпляра, чтобы получить необходимые метрики из PerfMon и сообщить об этом, используя понятное имя.

Следующие команды Powershell предоставляют разные идентификаторы процесса для одного и того же имени экземпляра:

PS > (Get-Counter "\Process(microsoft.dynamics.nav.server#3)\ID Process").CounterSamples.CookedValue
3308
PS > (Get-Counter "\.NET CLR Memory(microsoft.dynamics.nav.server#3)\Process ID").CounterSamples.CookedValue
3324

В microsoft.dynmaics.nav.server#3 Экземпляр связан с PID 3308 и 3324 в зависимости от выбранной вами метрики.

Я продублировал проблему с w3wp на другом сервере:

PS > (Get-Counter "\Process(w3wp#2)\ID Process").CounterSamples.CookedValue
5924
PS > (Get-Counter "\.NET CLR Memory(w3wp#2)\Process ID").CounterSamples.CookedValue
4396

В w3wp#2 Экземпляр связан с PID 5924 и 4396.

Я также дважды проверил значения непосредственно в мониторе производительности.


Моя работа заключается в том, чтобы просто повторно извлечь имена экземпляров для метрик на основе .NET, чтобы у меня было решение для моего процесса.

Я больше пытаюсь понять, почему это требуется, с этим вопросом.

tl; dr; Microsoft изучает меня?