Я пытаюсь подтвердить наблюдаемое поведение или ищу помощь в определении моей проблемы.
При использовании монитора производительности для сбора данных о нескольких экземплярах одного и того же процесса одно и то же имя экземпляра связано с разными 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 изучает меня?