Краткое содержание

Пользователи не могли обрабатывать заказы из-за того, что GetUser API возвращал ошибки 5XX.

Подробности инцидента

  • Оповещение было активировано на выделенном канале Mattermost из-за проблемы с API. Дежурный разработчик подтвердил предупреждение и определил в качестве причины ошибку GetUser API 5XX. Об этом незамедлительно сообщили в службу поддержки пользователей.
  • Группа обслуживания пользователей определила, что проблема возникла из-за неправильной конфигурации развертывания, что привело к отсутствию экземпляров в одном из IDC.
  • Группа обслуживания пользователей обновила конфигурацию развертывания и повторно развернула свою службу, чтобы восстановить отсутствующие экземпляры в затронутом IDC. Это действие привело к восстановлению всех служб.
  • После восстановления пользователи снова смогли обрабатывать заказы.

Первопричина

  • Служба заказов использует API GetUser для проверки статуса пользователя, что является важным шагом в процессе заказа.
  • Недавняя операция по переключению IDC была проведена группой обслуживания пользователей, которая перешла с IDC A на IDC B.
  • После развертывания User Service у IDC A не было запущенных экземпляров.
  • Проблема усугублялась тем, что Nginx продолжал прослушивать старый IDC A и не мог перенаправить живой трафик на новый IDC B. Это привело к недоступности API GetUser, что нарушило процесс заказа.

Предлагаемые улучшения

  • Убедитесь, что настройки Nginx обновлены в соответствии с переключателями IDC.
  • Группа заказов должна осуществлять мониторинг всех критических зависимостей в потоке заказов и настраивать оповещения о недоступности.
  • Команда обслуживания пользователей должна представить панель мониторинга ошибок Nginx 5XX, чтобы обеспечить более быстрое реагирование и время решения в будущем.

Обзор: ошибка Nginx 5xx

Ошибки 5XX в Nginx — это коды состояния ошибки сервера, которые указывают, что сервер знает, что он столкнулся с ошибкой, или иным образом не может выполнить запрос. Эти коды состояния возвращаются сервером, когда он сталкивается с непредвиденным условием, которое не позволяет ему выполнить запрос клиента.

Вот что означают некоторые из наиболее распространенных кодов ошибок 5XX:

  • Внутренняя ошибка сервера 500: общее сообщение об ошибке выдается, когда не подходит более конкретное сообщение.
  • 501 Not Implemented: сервер либо не распознает метод запроса, либо не может выполнить запрос.
  • 502 Bad Gateway: сервер действовал как шлюз или прокси-сервер и получил недопустимый ответ от вышестоящего сервера.
  • 503 Служба недоступна: сервер в настоящее время недоступен (поскольку он перегружен или отключен на техническое обслуживание).
  • 504 Gateway Timeout: сервер действовал как шлюз или прокси-сервер и не получил своевременный ответ от вышестоящего сервера.

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

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