
Unten sind zwei Bilder aus unserem Azure-App Service-Plan, der unsere Anwendung hostet. Wir haben kürzlich versucht, hochzuskalieren, aber das unten gezeigte Problem wurde dadurch nicht gelöst.
Unsere „Max-CPU“ erreicht den ganzen Tag über Spitzenwerte, jeden Tag … aber das ist die MAX-Aggregation. Das sind vorübergehende Spitzen. In der Zwischenzeit ist unsere durchschnittliche Aggregation des CPU-Prozentsatzes normal (zweites Foto).
Sind vorübergehende Spitzen bei der maximalen CPU-Auslastung zu erwarten, wie im ersten Bild zu sehen, oder ist das unnormal?
Danke schön!
Antwort1
Es handelt sich um eine Aggregationsregel, nicht um die tatsächliche Nutzung. Wenn Metriken erfasst werden, gibt es (für die CPU) eine einzige Metrik: die aktuelle CPU-Auslastung. Wenn Metriken 6 Mal pro Minute erfasst werden, gibt es 6 Werte. Wenn ein großes Intervall angezeigt wird, werden normalerweise nicht alle Daten angezeigt, sondern eine Aggregation durchgeführt. Wenn die Aggregation beispielsweise auf ein 10-Minuten-Intervall heruntergebrochen wird, werden alle Daten in diesem Intervall zu einer Zahl zusammengefasst. Dafür gibt es verschiedene Funktionen: Min, Max, Durchschnitt, Median usw.
Eine Möglichkeit besteht darin, den Durchschnitt zu ermitteln (Ihr zweites Diagramm). Eine andere besteht darin, den maximal gefundenen Spitzenwert in diesem Intervall anzuzeigen (Ihr erstes Diagramm). Die Aggregation auf Durchschnittswerte neigt dazu, Spitzenwerte zu verbergen, die Aggregation auf Maximalwerte neigt dazu, die Spitzennutzung unangemessen anzuschwellen. Wenn Sie ein Aggregationsfenster von 10 Minuten haben und während dieses Moments ein Prozess 0,1 Sekunden lang 100 % verbraucht hat und diese 0,1 Sekunde der Moment war, in dem die Metriken erfasst wurden, haben Sie ein 10-Minuten-Intervall mit 100 % CPU-Auslastung (wenn die Aggregation „max“ verwendet wird).
Antwort2
Das hängt stark von der darauf laufenden Anwendung ab. Wenn CPU-intensive Arbeit ausgeführt wird, wird die CPU-Auslastung wahrscheinlich so hoch wie möglich steigen. Der Unterschied, den Sie durch ein Upgrade der Hardware sehen sollten, besteht darin, dass die Aufgaben, an denen gearbeitet wird, schneller abgeschlossen werden.
Ich weiß nichts über die App, die Sie ausführen möchten. Und weiß daher nicht, ob es sich um eine Multithread-Anwendung handelt, die während dieser Spitzen wie vorgesehen zu laufen scheint, oder ob es sich um eine Singlethread-Anwendung handelt, die während der Spitzen hängen bleibt? Im ersten Fall würde ich mir keine großen Gedanken machen. Aber im zweiten Fall würde ich wahrscheinlich entweder die CPU noch weiter aufrüsten oder, wenn ich Zugriff auf den Quellcode der App hätte, versuchen, herauszufinden, ob es möglich ist, die CPU-intensive Aufgabe zu optimieren.