
目にしている動作を確認しようとしている、または問題を特定するための支援を求めています。
パフォーマンス モニターを使用して同じプロセスの複数のインスタンスのデータを収集する場合、同じインスタンス名が異なる 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 は私をガスライティングしているのでしょうか?