Как интерпретировать и что проверять при получении HTTP статус-кода 503 (Service Unavailable)?

«Как интерпретировать и что проверять при получении HTTP статус-кода 503 (Service Unavailable)?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Статус 503 Service Unavailable указывает, что сервер временно не может обработать запрос из-за перегрузки или технического обслуживания. Это ошибка сервера, а не клиента.

Порядок действий при его получении:

  1. Первичная проверка

    • Убедиться, что проблема не на стороне клиента (проверить сетевое соединение, прокси).
    • Повторить запрос через некоторое время.
    • Проверить доступность сервиса из другого сетевого окружения или с помощью онлайн-инструментов (например, curl).
      curl -v https://api.example.com/health
      # > HTTP/2 503
      # > Retry-After: 3600
  2. Анализ ответа сервера

    • Проверить заголовок Retry-After (если есть), который указывает, через сколько секунд или до какого времени можно повторить запрос.
    • Изучить тело ответа — сервер может вернуть более детальное сообщение об ошибке в формате HTML/JSON/XML.
  3. Контекст тестирования

    • Если 503 получен в ходе нагрузочного тестирования — это ожидаемый признак превышения лимитов сервера.
    • Если 503 получен в ходе функционального тестирования при низкой нагрузке — это критический дефект доступности сервиса.
  4. Документирование инцидента

    • Если ошибка устойчива и не связана с плановыми работами, завести баг-репорт, указав:
      • Время и частоту возникновения.
      • Конечную точку (URL) и метод запроса.
      • Полный ответ сервера (заголовки и тело).
      • Контекст (например, "возникает при 10+ параллельных запросах к /api/export").

Важно: 503 код часто возвращают балансировщики нагрузки или веб-серверы (например, nginx), когда upstream-сервис (приложение) не отвечает. Поэтому анализ должен включать проверку состояния всех компонентов серверной инфраструктуры.