
Ich versuche, ein beobachtetes Verhalten zu bestätigen oder suche Hilfe bei der Identifizierung meines Problems.
Wenn Sie den Leistungsmonitor verwenden, um Daten zu mehreren Instanzen desselben Prozesses zu erfassen, wird derselbe Instanzname mit unterschiedlichen PIDs verknüpft. Achten Sie dabei insbesondere auf die \.NET CLR Memory()\Process ID
und \Process()\ID Process
-Werte.
Ich habe das Verhalten mit dem Microsoft Dynamics Nav Server-Prozess identifiziert, es auf einem anderen Server dupliziert und das Problem mit dem w3wp-Prozess auf einem dritten Server reproduziert.
Ist das das erwartete Verhalten?
Habe ich fälschlicherweise angenommen, dass beide Werte gleich wären?
Ich vermute, dass die .NET-Metriken die Instanznamen anders behandeln als die anderen Leistungsmetriken, aber ich habe nichts Dokumentiertes gefunden, das diese Theorie unterstützt.
Hintergrund und Duplizieren
Beim Versuch, Performance Monitor-Daten zu sammeln, um sie an unser Überwachungssystem (Zabbix) zu senden. Aufgrund derPerfMon verarbeitet mehrere InstanzenIm selben Prozess verwende ich ein Powershell-Skript, um den Anzeigenamen über die PID in den Instanznamen zu übersetzen. Anschließend verwende ich den erfassten Instanznamen, um die erforderlichen Metriken aus PerfMon abzurufen und sie unter Verwendung des Anzeigenamens zurückzumelden.
Die folgenden Powershell-Befehle liefern unterschiedliche Prozess-IDs für denselben Instanznamen:
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
Die microsoft.dynmaics.nav.server#3
Instanz ist mit PID 3308 und 3324 verknüpft, je nachdem, welche Metrik Sie abrufen.
Ich habe das Problem mit w3wp auf einem anderen Server dupliziert:
PS > (Get-Counter "\Process(w3wp#2)\ID Process").CounterSamples.CookedValue
5924
PS > (Get-Counter "\.NET CLR Memory(w3wp#2)\Process ID").CounterSamples.CookedValue
4396
Die w3wp#2
Instanz ist mit PID 5924 und 4396 verknüpft.
Ich habe die Werte auch direkt im Leistungsmonitor noch einmal überprüft.
Meine Problemumgehung besteht darin, die Instanznamen für die .NET-basierten Metriken einfach ein zweites Mal abzurufen, sodass ich eine Lösung für meinen Prozess habe.
Mit dieser Frage versuche ich eher zu verstehen, warum dies erforderlich ist.
tl;dr; Versucht Microsoft, mich zu manipulieren?