同じ PID に対して PerfMon で異なるプロセス名が表示される

同じ PID に対して PerfMon で異なるプロセス名が表示される

目にしている動作を確認しようとしている、または問題を特定するための支援を求めています。

パフォーマンス モニターを使用して同じプロセスの複数のインスタンスのデータを収集する場合、同じインスタンス名が異なる PID に関連付けられます。具体的には、\.NET CLR Memory()\Process IDおよびの\Process()\ID Process値を確認します。

Microsoft Dynamics Nav Server プロセスの動作を特定し、別のサーバーに複製して、w3wp プロセスを使用して 3 番目のサーバーで問題を再現しました。

これは想定された動作ですか?

両方の値が同じであると誤って想定しましたか?

私の推測では、.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 ベースのメトリックのインスタンス名をもう一度取得して、プロセスを解決することです。

私は、この質問でなぜこれが必要なのかを理解しようとしています。

tl;dr; Microsoft は私をガスライティングしているのでしょうか?

関連情報