
Я пытаюсь подтвердить наблюдаемое мной поведение или ищу помощь в определении своей проблемы.
При использовании Performance Monitor для сбора данных о нескольких экземплярах одного и того же процесса одно и то же имя экземпляра ассоциируется с разными PID. В частности, рассмотрим значения \.NET CLR Memory()\Process ID
и \Process()\ID Process
.
Я определил поведение процесса Microsoft Dynamics Nav Server, продублировал его на другом сервере и воспроизвел проблему на третьем сервере, используя процесс w3wp.
Ожидаемое ли это поведение?
Ошибочно ли я предположил, что оба значения будут одинаковыми?
Я предполагаю, что метрики .NET обрабатывают имена экземпляров иначе, чем другие метрики производительности, но я не нашел никаких документальных подтверждений этой теории.
Предыстория и как дублировать
При попытке собрать данные Performance Monitor для отправки в нашу систему мониторинга (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.
Я также дважды проверил значения непосредственно в Performance Monitor.
Мой выход — просто извлечь имена экземпляров во второй раз для метрик на основе .NET, чтобы у меня было решение для моего процесса.
Я больше пытаюсь понять, зачем это нужно в этом вопросе.
tl;dr; Microsoft меня травит?