AppEngine Reaktionszeitabweichung

8

Ich überlege, AppEngine für die Bereitstellung einer Webanwendung zu verwenden, die ich gerade entwickle. Im Rahmen meiner Untersuchung der AppEngine-Plattform habe ich die Antwortzeit für einfache Anfragen überprüft. Zu diesem Zweck habe ich ein einfaches PING-Servlet geschrieben:

%Vor%

Ich habe dann ein Java-Programm geschrieben, um jede Sekunde eine Anfrage an dieses Servlet zu stellen und wie lange es dauert, bis die Anfrage abgeschlossen ist. Das Abrufen des Seiteninhalts verwendet den folgenden Code.

%Vor%

Alle 3 Minuten gibt mein Monitor-Skript Daten im folgenden Format aus:

%Vor%

normrequests sind alle Anfragen, die weniger als 500 ms benötigen LateReqs sind Anfragen, die länger als 500ms dauern Failreqs sind solche, die beim Download eine IO-Ausnahme auslösen oder wenn der empfangene Inhalt nicht gleich "PONG"

ist

Meine Ausgabe für die letzten ~ 20 Minuten ist wie folgt:

%Vor%

Dies zeigt, dass es in jedem 5-Minuten-Zeitraum zwischen 2 und 8 "späten" Anfragen gibt, die im Durchschnitt zwischen 827 und 1177ms dauern.

Dies entspricht der folgenden Ausgabe desselben Zeitraums, der für dasselbe Servlet auf einer Mikroinstanz ausgeführt wird, die auf Amazon EC2 ausgeführt wird.

%Vor%

Dies zeigt viel weniger "späte" Anfragen und die Antwortzeit für diese langsamen Anfragen ist viel niedriger.

Ich mache meine Anfragen von einem Server in Großbritannien. Meine Amazon EC2-Instanz läuft in "US East". Ich weiß nicht, wo Google meine AppEngine-Instanz ausführt.

Kann ich etwas tun, um die Konsistenz der AppEngine-Antwortzeiten zu verbessern, oder ist die Abweichung, die ich für AppEngine sehe, normal?

    
mchr 25.11.2010, 10:41
quelle

2 Antworten

0

Soweit ich das beurteilen kann, ist die Varianz einfach eine Eigenschaft des Netzwerks, das Google verwendet.

    
mchr 13.01.2011, 13:27
quelle
3

Die verspäteten Anforderungen, die Sie sehen, sind darauf zurückzuführen, dass App Engine eine neue Java-Laufzeitumgebung für die Verarbeitung Ihrer Anfrage eingerichtet hat. App Engine erhöht die Anzahl der Instanzen Ihrer App, die auf Anforderung ausgeführt wird, und inaktiviert inaktive Instanzen nach einer gewissen Inaktivitätspause.

Dieses Verhalten ist bei Apps mit wenig Verkehr viel stärker sichtbar, da selbst ein einzelner Benutzer eine Spitze verursachen kann, die neue Laufzeiten erfordert, und Instanzen werden eher aus Inaktivität heruntergefahren. Wenn der Traffic für Ihre App steigt, nimmt die Anzahl der Aufwärmanforderungen, die Sie sehen, proportional mit dem Traffic ab.

    
Nick Johnson 25.11.2010 23:45
quelle

Tags und Links