2016-09-10 11 views
1

Наши параметры AutoScaling в app.yaml заключаются в следующем:Почему мы испытываем огромную задержку в одном автомасштабированном экземпляре Google App Engine, когда доступно несколько других?

automatic_scaling: min_idle_instances: 3 max_idle_instances: automatic max_pending_latency: 30ms max_concurrent_requests: 20

В результате 3 экземпляра резидентов и обычно 2-6 динамические экземпляры (в зависимости от трафика), но распределение нагрузки между экземплярами кажется неэффективным , На скриншоте ниже мы видим 1 экземпляр с подавляющим большинством запросов и массивную задержку в 21 секунду (в последнюю минуту).

Для меня это означает, что в нашей установке должно быть что-то неправильно, чтобы объяснить эти высокие задержки.

У кого-нибудь были проблемы с GCP или App Engine?

enter image description here

+0

Вы не должны ожидать балансировки нагрузки на трафик между экземплярами, см. Http://stackoverflow.com/questions/37188781/in-google-app-engine-only-one-instance-handling-most-of-requests –

ответ

3

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

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

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