Google App Engine - 在负载测试中处于高负载时,throttle_code = 4

时间:2010-07-05 13:34:55

标签: google-app-engine jmeter

我正在使用JMeter运行一些负载测试,以了解我的应用程序在Google App Engine(Java)上的加载情况。

当我遇到大约100个虚拟用户时,我的响应时间开始下降,我注意到GAE日志文件中出现了“throttle_code = 4”(见下文)。

有谁知道这意味着什么?事实上,我是从同一个IP发出多个请求来达到某种自动DDOS保护吗?

由于

---- 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

1 个答案:

答案 0 :(得分:3)

在这里看到(显然)Google官方的回答,但我不确定它是否完全回答了这个问题。

  

看起来您的请求需要3500毫秒。只要您保持平均毫秒/请求1000毫秒或以下(我们建议800毫秒,最低400毫秒),我们会自动调整为您的请求提供服务的实例数。如果您运行了大量长时间运行的请求,我们将不会为您启动新实例,您将达到扩展上限。

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

显然,他们会根据你的“效率”加油,但看起来你的原始请求只有69毫秒。可能是因为其他请求,您的应用的平均ms / req是否更高?这似乎是一个奇怪的策略,如果你的应用程序很慢,因为你的应用程序很慢,因为它还没有旋转...

我注意到的另一件事是你通过JMeter的测试请求是35kb而另一个请求的7kb - 你的应用程序的数据是否在测试负载下增加?标题堆积?