Ich habe fünf Apps in einem Azure App Service Plan, alle verschiedene Kopien derselben App für verschiedene Clients. Es ist eine ASP.NET MVC-App mit einer SQL-Datenbank.
Heute Morgen bin ich mit langsamen und nicht reagierenden Sites aufgewacht, was manchmal zu einem 503-Fehler führte. Beim Überprüfen der CPU / Speicher-Metriken für den App Service Plan stellte ich fest, dass die CPU zu 100% gebunden war:
Die grafische Darstellung der CPU-Zeit der einzelnen Standorte zeigt, dass alle gleichzeitig ablaufen, obwohl einige schlechter sind als andere:
Ich habe versucht, das Problem durch einen erweiterten Anwendungsneustart zu beheben, aber das Blade wurde nicht geladen. Ich gehe davon aus, dass versucht wurde, Informationen vom Server abzurufen, die nicht antworten konnten.
Am Ende habe ich versucht, jede der Sites einzeln zu stoppen, was die CPU wieder auf Null brachte, und sie dann wieder hochgefahren, was das Problem gelöst zu haben schien, aber jetzt beginnen einige von ihnen wieder hochzuklettern.
Ich hatte vor ein paar Wochen ein ähnliches Problem und ging davon aus, dass ich für meinen App-Plan zu groß geworden bin. Daher wurde ein Upgrade von S1 auf S2 durchgeführt, und es war bis heute in Ordnung.
Ich bin völlig ratlos, wie ich herausfinden kann, was die Ursache für dieses CPU-hungrige Verhalten ist. Kann mich jemand in die richtige Richtung weisen, wie ich anfangen kann, dies zu diagnostizieren?
quelle
Antworten:
Wir hatten dieses Problem einige Male und jedes Mal stellte sich heraus, dass es sich um GC (Garbage Collection) handelt. Es ist schwer zu beweisen und zu diagnostizieren, aber am Ende verwende ich die Kudo (scm) -Seite und klicke auf tools => support (wodurch Sie zur Support-Site für Apps gelangen.
Von hier aus wählen Sie Ihr Verzeichnis (falls Sie mehrere haben) und Ihre Site aus, klicken auf Analysieren => Metriken und dann auf die Schaltfläche Diagnose ( HINWEIS: Dies hat sich bereits geändert, sodass sich diese Schritte jederzeit ändern können) und dann wieder auf Analysieren => Dianotics Ich werde irgendwann einen Memory Dump => "Analysestatus" Bericht erhalten. Dies sollte eine MHT-Datei sein (die Sie im hasserfüllten Browser IE oder Edge öffnen können) und dann nach dem Schlüssel "gc" suchen.
Sie finden einige interessante Aufrufstapel-Frames mit Verweisen auf Dinge wie "GCFrame" oder interessantere Aufrufe von "System.Threading.WaitHandle.WaitMultiple". Wenn Sie zu viele davon erhalten, hat Ihr System möglicherweise Probleme mit der Speicherbereinigung .
Wie man das löst ... das ist ein Thema, das in vielen anderen Threads behandelt wird, weil es so ist, als würde man fragen: "Wie lebe ich in einer Welt, in der IE 6 noch verwendet wird?" ...
quelle
Am besten installieren Sie New Relic oder Application Insights für diese bestimmte App. Es kann einfach über den App-Dienst -> Tools -> Leistungsüberwachung installiert werden. Auf diese Weise erhalten Sie einen detaillierten Überblick über die Vorgänge auf Server- und Clientseite.
Artikel: Überwachen Sie die Leistung der Azure-Webanwendung
quelle