2015-06-24 1 views
7

App Engine Spikesэкземпляров двигателя App спайки

Я использую автоматическое масштабирование с GAE, работает php55. Это также произошло с php5. Настройки:

automatic_scaling: 
    min_idle_instances: 0 
    max_idle_instances: 2 # default value 
    min_pending_latency: 500ms 
    max_pending_latency: 7000ms 

У меня возникли проблемы с пониманием того, почему эти шипы случаются. Обычно для моего приложения требуется не более 5 экземпляров. Время от времени это скачкообразно скажется на 1200+ без видимых причин. Журналы, окружающие это время, показывают 500 ошибок таймаута для всего нестатического контента.

Единственная зависимость от этих страниц - простая вставка базы данных. Я использую Google Cloud SQL. В журналах Cloud SQL ошибок не обнаружено.

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

+0

У вас есть точная запись в журнале для ошибки 500? – Mars

+0

@Mars. Каждый отдельный запрос в течение этого временного интервала был «запросом, вычисленным после 100 секунд». Ошибка 500. –

+1

Может быть, запрос Cloud SQL был исчерпан? Каждый запрос переднего конца к GAE должен быть завершен в течение 60 секунд. Возможно, вы захотите отложить более длительные операции до задачи: https://cloud.google.com/appengine/docs/php/taskqueue/ – Mars

ответ

1

Это было вызвано тем, что база данных отключилась через короткое время бездействия. Когда трафик вернулся, требуется перезапуск сервера базы данных. В течение этого времени движок приложения подумал, что нужно создать больше экземпляров, чтобы не отставать от большой нагрузки.

Я решил это, оставив свой экземпляр базы данных «всегда включен».

+0

, как и любой другой ресурс в Интернете, база данных также может опуститься, возможно, вы должны справиться с этим сценарием при разработке своего приложения. Также в app.yaml есть параметр max_concurrent_requests, который вы можете настроить, скажем, если это 10, и вы получили 10 процессов, ожидающих ввода базы данных, тогда appengine будет порождать новый экземпляр, даже если использование ЦП первого экземпляра равно нулю. Я подкорректирую его как можно выше. –

+1

@LawrenceMok, будьте осторожны с этим подходом, вы можете иметь максимум 12 подключений к базе данных на экземпляр двигателя приложений. После этого произойдет сбой соединения с БД. –

+0

Спасибо @Chris за напоминание! –

 Смежные вопросы

  • Нет связанных вопросов^_^