Google App Engine - throttle_code = 4 при высокой нагрузке при нагрузочном тестировании - PullRequest
5 голосов
/ 05 июля 2010

Я запускаю несколько нагрузочных тестов, используя 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 Ответ

3 голосов
/ 28 июля 2010

См. (По-видимому) официальный ответ Google здесь, хотя я не уверен, что он полностью отвечает на вопрос.

Похоже, ваш запрос занимает 3500 мс.Мы автоматически увеличиваем количество экземпляров, обслуживающих ваши запросы, если вы поддерживаете средние миллисекунды / запрос 1000 мс или меньше (мы рекомендуем 800 мс, оптимально 400 мс).Если вы выполняете много долго выполняющихся запросов, мы не будем показывать вам новые экземпляры, и вы достигнете предела масштабирования.

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

Очевидно, они дросселируются на основеваша «эффективность», но похоже, что ваш первоначальный запрос был только 69 мс.Возможно, среднее значение ms / req вашего приложения было выше из-за других запросов, возможно?Кажется, что странная тактика НЕ ​​раскручивается, потому что ваше приложение медленное, если ваше приложение медленное, потому что оно еще не раскручивалось ...

Еще одна вещь, которую я заметил, это то, что ваш тестовый запрос через JMeter составляет 35 КБпротив 7 КБ другого запроса - увеличиваются ли данные вашего приложения под нагрузкой тестирования?Заголовки накапливаются?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...