Wie lautet die Http-Warteschlangenlänge in Azure Web App?

9

Was ist der Http-Warteschlangenlängen-Messwert in Azure Web App?

Meine Web App ist ständig über 150.

Ich mache mir Sorgen, da der Standardalarm, der im App Service aktiviert werden kann, einen Standardschwellenwert von 100 hat.

Könnte die Verwendung von SignalR diese Metrik beeinflussen?

BEARBEITEN:

Hier ist typische Tageslast:

    
Guillaume Morin 22.11.2015, 16:06
quelle

3 Antworten

5

BEARBEITEN 11/12/2016

Aufgrund einiger weiterer Informationen wird die HTTP Queue Length hier bald mit den Erwartungen übereinstimmen.

  

Ich habe die Bestätigung erhalten, dass nach dem Fix, der   Die Metrik "HTTP Queue Length" für die Serverfarm zeigt die tatsächlichen Werte an   HttpQueueLength (es zeigt fälschlicherweise den aktuellen Requests-Wert an   zu diesem Zeitpunkt) für die Serverfarm (App Service Plan). Dieses Update wird   in den kommenden Wochen in allen Regionen ausgerollt werden.

Beim Sprechen mit der Azure-Unterstützung ist die Länge der HTTP-Warteschlange in Wirklichkeit ein verwirrender Name und entspricht "W3SVC_W3WP", "Aktive Anfragen", "_Total".

Hier ist die vollständige Antwort

  

Hallo Shane, Sie haben Recht, wir hatten ein Problem mit der http-Warteschlangenmetrik festgestellt, wo wir das in Auto-Scaling / Alert einer Web-App herausgefunden haben   basierend auf dieser Metrik war irreführend, da diese Metrik die   insgesamt aktive Anfragen und nicht die Anfragen in der Warteschlange und wir hatten eine   Diskussion mit unserem Produktteam über diese Metrik und es erscheint   dass es im Namen der Metrik HTTP ein bisschen mehrdeutig ist   Warteschlange. In Wirklichkeit entspricht der Zähler, den wir auf dem Portal zeigen, dem   zu "W3SVC_W3WP", "Aktive Anfragen", "_Total". Mit anderen Worten, das   counter stellt keine Warteschlange dar, sondern fordert sie an   zu jeder Zeit laufen. Wir haben dies auch durch Überprüfung überprüft   in unseren Produktquellcode. Wir verstehen, wie der Name des   Counter könnte zu Verwirrung führen und wir haben eine Anfrage an unsere gestellt   Produktteam, um es umzubenennen. Das Produktteam ist besorgt, dass das Umbenennen   könnte vorhandene Warnungen, die Kunden möglicherweise haben, aber sie sind   in Betracht ziehen, eine weitere Metrik namens "Active Requests" hinzuzufügen, die aussieht   bei gleichem Wert und später "HTTP Queue Length" entfernen. Halten   In diesem Sinne war unser Vorschlag, eine andere Metrik (z   Beispiel: CPU / Memory), um Auto-Scale / Alert-Regeln statt zu konfigurieren   Verwenden der HTTP-Anforderungswarteschlange.

     

Ich hatte ein paar Tage zuvor mit unserem Produktteam eine Diskussion   und wir arbeiten gerade daran, diese aktualisiert zu haben, um darzustellen   dass der Zählerwert für "Anfragen" und nicht die wahre Http-Warteschlange ist   Länge.

Obwohl diese Unterscheidung bald irrelevant sein wird, da sie auch dies zu sagen hatten

  

Hi Shane, ich habe das gerade an meinem Ende getestet und ich sehe das   Portal wurde auf Site-Ebene aktualisiert, um diesen Messwert als anzuzeigen   "Anfragen". Ich denke, wir warten immer noch auf diese Veränderung   in die Einstellungen der Serverfarm verschoben.

     

Wenn ich Alert wähle. Wählen Sie im Dropdown-Menü "Ressource" die Option "Websites" aus   Wählen Sie Ihre Website, dann werden die Metriken "Anfragen" auflisten   seien Sie die aktuellen Anfragen.

Es ist also nur etwas zu beachten, dass diese Metrik in ihrem aktuellen Zustand nicht anzeigt, dass Sie Anforderungen haben, die das System nicht verarbeiten können.

    
Shane Neuville 09.11.2016, 00:10
quelle
6

Http Queue Length: Anzahl der ausstehenden HTTP-Operationen. Wenn Ihre Anwendung mehr Anfragen erhält als der Webserver verarbeiten kann, könnte dies Ihre Lücke sein. Das bedeutet, dass sich die Anforderungen verschlechtern und Ihre aktuelle Konfiguration nicht ausreicht, um die Last zu unterstützen. Verwenden Sie portal.azure.com. Der Standardwert für HTTP-Warteschlangenlänge beginnt bei 1

Ich denke, dass Sie SignalR für Sockets verwenden, während Sockets die Verbindung mit Ihrem Webserver aufrechterhalten. HTTP Queue Length ist die Anzahl der Webanforderungen, die vom Azure in die Warteschlange gestellt wurden, nur weil sie nicht mehr verarbeitet werden konnten Seien Sie, aber nicht sicher, wenn wir nicht weiter analysieren.

    
Brij Raj Singh - MSFT 23.11.2015 05:02
quelle
1

Wenn Anforderungen in die HTTP-Warteschlange enden, bedeutet dies, dass kein Thread zur Verarbeitung der Anforderungen verfügbar ist. Wie Kerem nahelegt, könnte es sein, dass es einige lange I / O-Aufrufe gibt, die die Threads in den Wartezustand versetzen (keine Anfragen zu bedienen). Dies ist sehr wahrscheinlich, da CPU und Speicher niedrig sind.

Sie können Diagnostic.Trace bei enter / exist-Methoden hinzufügen und im Anwendungsprotokoll nachsehen, wie lange es dauert, um von diesen Methoden aus zu arbeiten

Sie können Visual Studio auch remotlich anhängen und sehen, welche Threads ausgeführt werden. Wie viele warten?

Und ein anderer Ansatz wäre, einen Speicherabzug zu machen (vielleicht von der Kudu-Seite). Dann überprüfe was Threads machen: In WinDbg: ! CLRStack -a * ~ KB

Sie können die .dmp-Datei auch in Visual Studio öffnen, unmanaged auswählen und die threds überprüfen. Wenn sich alle / fast alle Threads in einem WaitFor *** -Objekt befinden, warten sie auf eine IO-Completion. In diesem Fall ist es wahr, dass eine zunehmende Instanziierung das Problem lösen / verringern wird, aber es wäre besser, die Methoden zu ändern, um die Async-Version für IO zu verwenden.

hth, Aldo

    
aljj 07.04.2016 11:40
quelle

Tags und Links