Ответ вслух Middle Балансировка и nginx спрашивают часто обновлено

Пользователи видят 502

Вопрос

Интервьюер: «После деплоя часть пользователей получает 502 от nginx. Как будете разбираться?»

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «502 значит, что nginx не получил корректный ответ от бэкенда. Сначала error.log nginx: там видно connect() failed (111: Connection refused) или upstream prematurely closed connection и адрес конкретного upstream.

Что должно прозвучать в ответе

  • Error log nginx: connect() failed, upstream prematurely closed, какой именно upstream

  • Состояние бэкендов: запущены ли, слушают ли порт, не перезапускаются ли

  • Совпадает ли время с выкаткой: нет readiness, нет graceful shutdown

  • Сеть и конфиг: правильные адреса и порты в upstream, DNS-имена резолвятся

  • Лимиты: число соединений, воркеров, файловых дескрипторов

  • Временная мера: откат или вывод проблемного экземпляра

Что могут спросить следом

  • Чем 502 отличается от 504?
  • Почему 502 бывает только во время деплоя?

Разбор

Образцовый ответ: «502 значит, что nginx не получил корректный ответ от бэкенда. Сначала error.log nginx: там видно connect() failed (111: Connection refused) или upstream prematurely closed connection и адрес конкретного upstream. Если ошибки на одном адресе, смотрю этот экземпляр: жив ли процесс, слушает ли порт, нет ли рестартов по OOM. Если 502 совпадают с выкаткой, почти наверняка трафик идёт в экземпляры, которые ещё не готовы или уже останавливаются: нужны readiness и graceful shutdown с паузой перед выходом. Ещё вариант: nginx закешировал старый IP бэкенда из DNS, если upstream задан именем. Если пользователи страдают прямо сейчас, откатываю релиз, а разбираюсь потом».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.