Wie kann die Ursache für eine 100% ige CPU-Auslastung im Azure App Service ermittelt werden?

12

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:

CPU bei 100%

Die grafische Darstellung der CPU-Zeit der einzelnen Standorte zeigt, dass alle gleichzeitig ablaufen, obwohl einige schlechter sind als andere:

CPU-Auslastung einzelner Standorte

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?

littlecharva
quelle
Dies scheint bei Azure-App-Serviceplänen ein wenig zu passieren. Haben Sie MS kontaktiert? - Sofern Sie keine Änderungen vorgenommen haben, würde ich sie darüber informieren, dass ein Problem mit der Plattform vorliegt.
Sum1sAdmin
Ich habe keinen Supportplan mit ihnen, also glaube nicht, dass es eine Möglichkeit gibt, sie zu informieren. Das ist ein bisschen beunruhigend, wenn ich nur zufällig 100% CPU-Probleme habe - möglicherweise muss ich nach einem anderen Lieferanten suchen. Würde es Ihnen helfen, zwei Instanzen zu haben?
Littlecharva
Ich würde die offenen Foren wie technet verwenden - Wenn es kritisch ist, könnten Sie es vergrößern, aber ich würde nicht mehr für etwas bezahlen, das sie reparieren müssen, wenn dies der Fall ist.
Sum1sAdmin

Antworten:

6

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?" ...

cdmdotnet
quelle
1
Das hat sich bewegt. Es befindet sich jetzt im App Service (nicht scm-Site, reguläre Azure-Site) unter "Diagnostizieren und Lösen von Problemen-> Diagnosetools-> Speicherabbild sammeln"
Josh Noe
3

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.

Anwendungsüberwachung

Artikel: Überwachen Sie die Leistung der Azure-Webanwendung

Bruno Faria
quelle