Назад | Перейти на главную страницу

Встреча 502 в Google App Engine

Я вижу довольно много ошибок 502 «Плохой шлюз» в Google App Engine. На графике ниже это сложно увидеть (цвета очень похожи, и я не могу понять, как их изменить), но это мой трафик за последние 6 часов:

Темно-розовая линия представляет ошибки 5xx. Они начали около 9:30 утра и успокоились около 12:30 PST. Но за эти 3 часа возвращался nginx 502 Bad Gateway довольно последовательно. А потом это просто прекратилось.

В течение этого времени, единственные коммиты, которые я сделал для кода Чтобы попытаться изменить поведение, нужно было увеличить каждый экземпляр с 0,5 до 1 ГБ памяти и увеличить TTL кеша для некоторых 404 ответов. Я также добавлена ​​проверка живучести чтобы nginx знал, когда серверы приложений не работают.

Я проверил журнал ошибок nginx и увидел несколько таких:

failed (111: Connection refused) while connecting to upstream

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

Может быть, это просто какая-то ошибка движка приложения?

РЕДАКТИРОВАТЬ @ 9: 17p PST: Ниже приведено изображение моего трафика App Engine за последние 24 часа с минимальными изменениями кода в приложении. Я выделил шипы 5xx, чтобы вы могли видеть их более четко.

К сожалению, существует множество причин для увеличения количества ошибок 502, таких как:

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

Чтобы получить дополнительную информацию, вам необходимо загляните в журнал Stackdriver для ошибки 502 из облачной консоли.

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

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

И последнее, что нужно проверить, это то, попадает ли процент трафика с всплеском, который у вас был, по сравнению со всем вашим трафиком ниже SLA.