Wir hatten kürzlich ein Problem auf unserem Live-Server, das dazu führte, dass unsere Web-App nicht mehr reagierte. Alles, was wir bekamen, waren 503 Fehler, bis wir den Server neu starteten, dann war es in Ordnung. Schließlich habe ich es auf das httperr.log zurückgeführt und eine ganze Reihe von 1_Connections_Refused-Fehlern gefunden.
Weitere Untersuchungen schienen darauf hinzudeuten, dass wir das nicht ausgelagerte Poollimit erreicht hatten. Seitdem überwachen wir den nicht ausgelagerten Poolspeicher mit Poolmon.exe und glauben, das Tag identifiziert zu haben, das das Problem verursacht.
Tag Type Allocs Frees Diff Bytes Per Alloc
Even Nonp 51,231,806 50,633,533 684,922 32,878,688 48
Wenn wir poolmon.exe / g verwenden, wird der zugeordnete Treiber als [<unbekannt> Ereignisobjekte] angezeigt.
Das ist so ziemlich keine Hilfe. Mein Team hat viel Zeit damit verbracht, dieses Problem zu untersuchen, und konnte keinen Prozess finden, um dies auf eine bestimmte Anwendung oder einen bestimmten Dienst einzugrenzen. Ich habe das Gefühl, dass die meisten Leute das Problem zu lösen scheinen, indem sie Prozesse auf der Maschine beenden, bis sie sehen, dass der nicht ausgelagerte Speicher zurückgesetzt wird. Dies ist nicht genau das, was Sie sehen möchten, wenn Sie an einer Produktionsmaschine arbeiten.
Wenn ich den Task-Manager öffne und die Prozessliste ansehe. Ich sehe MailService.exe mit einem NP-Pool-Wert von 105 KB, der 36 KB höher ist als der Wert des als zweites aufgeführten Prozesses. Da wir in der Vergangenheit einige Probleme mit unserem Mailserver hatten (die möglicherweise mit diesem Problem zusammenhängen oder nicht), ist mein Bauchgefühl, dass dies das Problem verursacht.
Bevor wir jedoch mit dem Neustart der Dienste beginnen, möchte ich etwas mehr Sicherheit haben als nur ein "Bauchgefühl".
Ich habe auch versucht, poolmon.exe / c zu verwenden, aber dies gibt immer den Fehler zurück:
unable to load msvcr70.dll/msvcp70.dll
und es wird keine localtag.txt erstellt. Mein Kollege musste pooltag.txt aus dem Internet herunterladen, da wir nicht herausfinden können, wo es sich befindet. Wir haben weder den Win-Debugger noch das Win-DDK installiert (das kann ich sehen). Vielleicht liegt der obige Fehler vor, weil wir keines davon installiert haben - aber ich weiß es nicht.
Schließlich habe ich versucht:
C:\windows\system32\driver\findstr /m /l Even *.sys
Dies ergab eine ziemlich große Liste von .sys-Dateien und war bei dem vorliegenden Problem wiederum überhaupt nicht hilfreich.
Meine Frage lautet also: Gibt es eine andere Möglichkeit, die Ursache für diesen Speicherverlust einzugrenzen?
AKTUALISIEREN:
Wie unten vorgeschlagen, habe ich den Pool Nonpaged Bytes für den letzten Tag oder so protokolliert, um festzustellen, ob ein Prozess im Trend liegt. Zum größten Teil scheinen alle Prozesse in ihrer Verwendung ziemlich statisch zu sein. Zwei von ihnen scheinen leicht gestiegen zu sein. Ich werde dies in den nächsten Tagen weiter überwachen.
Ich habe auch vergessen zu erwähnen, dass keiner der Prozesse eine übermäßige Anzahl von Handles zu verwenden scheint.
UPDATE 2:
Ich habe dies in den letzten Wochen überwacht. Sowohl der Pool nicht ausgelagerter Bytes für einzelne Prozesse als auch der gesamte Pool nicht ausgelagerter Bytes sind während dieser Zeit relativ stabil geblieben. Während dieser Zeit wurde Windows aktualisiert und der Server neu gestartet, sodass ich mich frage, ob das Problem dadurch behoben wurde. Ich sehe definitiv kein beständiges Wachstum im Nonpaged Bytes Pool, jetzt wo ich vorher war.