Estou tentando confirmar um comportamento que estou vendo ou procurando ajuda para identificar meu problema.
Ao usar o Monitor de Desempenho para coletar dados em várias instâncias do mesmo processo, o mesmo nome de instância é associado a diferentes PIDs. Analisando especificamente os valores \.NET CLR Memory()\Process ID
e \Process()\ID Process
.
Identifiquei o comportamento com o processo do Microsoft Dynamics Nav Server, dupliquei-o em outro servidor e reproduzi o problema em um terceiro servidor usando o processo w3wp.
Esse comportamento é esperado?
Eu assumi incorretamente que ambos os valores seriam os mesmos?
Meu palpite é que as métricas do .NET lidam com os nomes das instâncias de maneira diferente das outras métricas de desempenho, mas não encontrei nada documentado que suporte essa teoria.
Histórico e como duplicar
Ao tentar coletar dados do Monitor de Desempenho para enviar para o nosso sistema de monitoramento (Zabbix). Devido a como o PerfMon lida com várias instâncias do mesmo processo, estou usando um script Powershell para traduzir de um nome amigável para o nome da instância por meio do PID. Em seguida, uso o nome da instância coletada para extrair as métricas necessárias do PerfMon e relatar de volta usando o nome amigável.
Os seguintes comandos do Powershell fornecem IDs de processo diferentes para o mesmo nome de instância:
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
A instância microsoft.dynmaics.nav.server#3
está associada ao PID 3308 e 3324, dependendo de qual métrica você selecionar.
Eu tenho duplicado o problema com o w3wp em outro servidor:
PS > (Get-Counter "\Process(w3wp#2)\ID Process").CounterSamples.CookedValue
5924
PS > (Get-Counter "\.NET CLR Memory(w3wp#2)\Process ID").CounterSamples.CookedValue
4396
A instância w3wp#2
está associada ao PID 5924 e 4396.
Eu também verifiquei os valores diretamente no Monitor de desempenho.
Meu trabalho é apenas extrair os nomes das instâncias uma segunda vez para as métricas baseadas em .NET, para que eu tenha uma solução para o meu processo.
Estou mais tentando entender por que isso é necessário com essa pergunta.
tl; dr; A Microsoft está me iluminando?
Tags perfmon