Ich habe seit letzter Woche Probleme, da eine meiner auf IIS laufenden Web-Apps mindestens einmal am Tag zu zufälligen Zeiten hängen bleibt. Ich muss den App-Pool neu starten, um sie wieder zum Leben zu erwecken. CPU und Speicher scheinen normal.
Wenn ich mir die aktiven Threads im Abschnitt „Arbeitsprozesse“ im IIS-Manager ansehe, kann ich sehen, wie sich Threads ansammeln, als ob sie feststecken würden. Wenn etwas hängt, sind über 25 Threads da, wenn es ordnungsgemäß läuft, sind es zu jedem Zeitpunkt 3-6.
Ich vermute, dass dies an einer Codeänderung in meiner C#-Webanwendung liegen könnte, kann aber nicht herausfinden, wo/was es ist. Soweit ich mich erinnern kann, wurden nur ein paar kleinere Änderungen vorgenommen.
In der letzten Woche habe ich mit verschiedenen Tools wie WinDbg und dotTrace wirklich intensiv eine Diagnose versucht, um herauszufinden, ob ich irgendetwas Offensichtliches finden kann, aber an diesem Punkt bin ich etwas überfordert.
Ich sehe, dass es viele Threads mit Timeout-Fehlern beim Herstellen einer Verbindung zu meiner NoSQL-Datenbank (RavenDb) gibt. Ich glaube jedoch, dass es sich hierbei um eine falsche Fährte handelt und dass die Threads in IIS blockiert sind, da ich von einer anderen IIS-App aus problemlos eine Verbindung zu derselben Datenbank herstellen und auch die Datenbankverwaltungstools zum Verwalten/Abfragen der Datenbank verwenden kann.
Ich habe Minidumps und dotTrace-Snapshots zum Spielen.
Hier sind die Ergebnisse von „~*e !clrstack“ auf WinDbg: https://gist.github.com/phinett/7901d82fa526696d3c92
Irgendwelche Hilfe/Ideen, worauf ich achten sollte, um den Übeltäter aufzuspüren? Ich stelle bei Bedarf gerne Zugriff auf Minidumps bereit.
Danke schön!
Antwort1
Wahrscheinlich ist es viel einfacher und schneller, mit DebugDiag v2 Update 1 zu beginnen, einen Prozess-Dump zu erzwingen und dann die Hang-Analyse auszuführen.