Пользователи видят 502
Вопрос
Интервьюер: «После деплоя часть пользователей получает 502 от nginx. Как будете разбираться?»
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.