PerfMon 中同一 PID 的不同流程名稱

PerfMon 中同一 PID 的不同流程名稱

我正在嘗試確認我所看到的行為或正在尋求幫助來確定我的問題。

當使用效能監視器收集相同進程的多個實例的資料時,相同的實例名稱會與不同的 PID 關聯。具體查看\.NET CLR Memory()\Process ID\Process()\ID Process值。

我透過 Microsoft Dynamics Nav Server 進程識別了該行為,將其複製到另一台伺服器上,並使用 w3wp 進程在第三台伺服器上重現了該問題。

這是預期的行為嗎?

我是否錯誤地假設兩個值相同?

我的猜測是,.NET 指標處理實例名稱的方式與其他效能指標不同,但我還沒有找到任何支援這一理論的文檔。


背景和如何複製

嘗試收集效能監視器資料傳送到我們的監控系統(Zabbix)。由於如何PerfMon 處理多個實例在同一進程中,我使用 Powershell 腳本透過 PID 將友善名稱轉換為實例名稱。然後,我使用收集的實例名稱從 PerfMon 中提取所需的指標,並使用友善名稱將其報告回來。

以下 Powershell 指令為相同實例名稱提供不同的進程 ID:

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 的指標再次提取實例名稱,這樣我就有了流程的解決方案。

我更想理解為什麼這個問題需要這樣做。

太長;博士;微軟是在幫我加油嗎?

相關內容