2010-07-05 12 views
5

Je lance des tests de charge à l'aide de JMeter pour avoir une idée de la performance de mon application en charge sur Google App Engine (Java). Quand je touche environ 100 utilisateurs virtuels, mon temps de réponse commence à diminuer, et je remarque que "throttle_code = 4" apparaît dans les fichiers journaux GAE (voir ci-dessous).Google App Engine - throttle_code = 4 en cas de charge élevée lors des tests de charge

Est-ce que quelqu'un sait ce que cela signifie? Est-ce que le fait que je fasse des demandes multiples à partir de la même IP frappe une sorte de protection automatique de DDOS?

Merci

 
---- request with"throttle_code=4"; when connecting from JMeter 
07-05 05:11AM 58.917 /market/1234/history?pricebars=240 200 3651ms 19cpu_ms 35kb Java/1.5.0_16,gzip(gfe) 
75.101.226.4 - - [05/Jul/2010:05:12:02 -0700] "GET /market/1234/history?pricebars=240 HTTP/1.1" 200 35566 - "Java/1.5.0_16,gzip(gfe)" "ci-pricehistory.appspot.com" ms=3652 cpu_ms=19 api_cpu_ms=0 cpm_usd=0.004527 pending_ms=3570 throttle_code=4 
I 07-05 05:12AM 02.532 
uk.co.cityindex.CandleServlet fetch: Loading 240 bars from cache... 
I 07-05 05:12AM 02.558 
uk.co.cityindex.CandleServlet fetch: time:47 

---- request without "throttle" log; when connecting from browser 
07-05 06:28AM 10.993 /market/1234/history?pricebars=240 200 69ms 19cpu_ms 7kb Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4,gzip(gfe) 
80.169.172.178 - - [05/Jul/2010:06:28:11 -0700] "GET /market/1234/history?pricebars=240 HTTP/1.1" 200 7572 - "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4,gzip(gfe)" "ci-pricehistory.appspot.com" ms=69 cpu_ms=19 api_cpu_ms=0 cpm_usd=0.001423 
I 07-05 06:28AM 11.031 
uk.co.cityindex.CandleServlet fetch: Loading 240 bars from cache... 
I 07-05 06:28AM 11.055 
uk.co.cityindex.CandleServlet fetch: time:45 

Répondre

3

officiel Voir (apparemment) Google réponse ici, mais je ne suis pas sûr qu'il répond tout à fait la question.

Il semblerait que votre requête prenne 3500ms. Nous augmentons automatiquement le nombre d'instances qui traitent vos requêtes tant que vous maintenez des millisecondes/demandes moyennes de 1000ms ou moins (nous recommandons 800ms, le sous-400ms est optimal). Si vous exécutez beaucoup de requêtes à long terme, nous ne créerons pas de nouvelles instances pour vous et vous atteindrez un plafond de mise à l'échelle.

http://osdir.com/ml/GoogleAppEngine/2010-07/msg00165.html

Apparemment, ils manette des gaz en fonction de votre « efficacité », mais il semble que votre demande initiale était seulement 69ms. La moyenne de votre application était-elle plus élevée en raison d'autres demandes? Il semble qu'une tactique étrange ne tourne pas parce que votre application est lente si votre application est lente car elle n'a pas encore tourné ...

L'autre chose que je remarque est que votre demande de test via JMeter est 35kb vs le 7kb de l'autre requête - les données de votre application augmentent-elles sous test de charge? Les en-têtes s'accumulent?