Как определить причину снижения производительности? - PullRequest
1 голос
/ 23 ноября 2011

Я играю с GAE и сделал очень компактное приложение, которое получает крошечные запросы и выводит крошечные ответы с постоянной скоростью (из программы, использующей cURL и цикл).

Это не касается пользовательского интерфейсаи он не предназначен для вызова из браузера, он просто получает запросы POST, выполняет некоторую обработку и выводит легкие данные в виде текста ASCII.

Мне удалось немного оптимизировать мое приложение, чтобы средняя задержка составлялаобычно 20-30 мс, и до сих пор он работал отлично, один экземпляр мог, вероятно, легко обрабатывать дюжину запросов в секунду из-за очень низкой задержки.

Однако этим утром примерно 40 минут былопроизошел значительный всплеск снижения производительности, и приложению потребовалось от 20 000 до 30 000 мс для обработки запроса, см. здесь: http://i.imgur.com/OWQdd.png.Код приложения GAE за это время не изменился, ни программа, которая делает запросы.

Как я могу узнать причину этого и произойдет ли это снова в будущем?Я проверил в журналах, и ничего не выглядело неправильно, и нет никакого способа связаться с Google по этому вопросу.

Мое приложение очень чувствительно к задержке, и все запросы должны обрабатываться как можно быстрее и, конечно, не более 1 секунды.

Я установил минимальную задержку в 10 мс на панели администратора моего приложения, но есть ли способ уменьшить максимальное время ожидания запроса?Я думаю, что по умолчанию это 60 секунд.


Редактировать: Вот другие диаграммы , где мы можем увидеть, что было затронуто «API-вызовами ЦП» и «Активными экземплярами», но яя не уверен, как это говорит мне, что пошло не так ...


Edit2: Вот несколько записей журнала для запросов, которые произошли в течение проблемного периода:

69.165.137.199 - - [23/Nov/2011:06:56:11 -0800] "POST / HTTP/1.1" 200 287 - - "app.appspot.com" ms=36378 cpu_ms=258 api_cpu_ms=98 cpm_usd=0.007259 instance=00c61b117cd98a4e8f9d6c0215d5e14c3336
69.165.137.199 - - [23/Nov/2011:06:55:32 -0800] "POST / HTTP/1.1" 200 287 - - "app.appspot.com" ms=34584 cpu_ms=125 api_cpu_ms=98 cpm_usd=0.003555 instance=00c61b117cd98a4e8f9d6c0215d5e14c3336

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Вот несколько вещей, которые нужно попробовать:

  • Попробуйте снова развернуть его под другим именем (задайте это по умолчанию) и посмотрите, вернется ли производительность.Если это произойдет, то может быть что-то, что заставляет его замедляться во время работы.
  • Проверьте, насколько велико ваше хранилище данных.У вас могут возникнуть медленные запросы при тестировании с большим набором данных.
  • Загрузите appstats , вот учебник и следуйте этому руководству по профилированию производительности
  • Если выиспользуя memcache, проверьте, что вы возвращаете данные из него, вместо того, чтобы делать другой запрос к хранилищу данных
  • Если вы используете очереди задач, убедитесь, что они не застряли.Вы можете вручную запустить их со страницы администратора.
1 голос
/ 24 ноября 2011

Вы проверяли из логов, где было потрачено время?В CPU, в состоянии ожидания или в API?По моему опыту, хранилище данных просто иногда делает это без очевидной причины, поэтому в вашем приложении не обязательно что-то не так.Попробуйте хранилище данных с высокой репликацией, если важна стабильная задержка, хотя минимальная задержка немного выше.

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