hostprofi.ru
Подобрать хостинг
Термин·буква S

Service Unavailable (503)

краткое определение

HTTP 503 — сервер временно недоступен из-за перегрузки или технического обслуживания.

Service Unavailable 503 — HTTP-статус, означающий временную недоступность сервера. В отличие от 500 (Internal Server Error), 503 явно сигнализирует, что сервер жив и понимает запрос, но сейчас не может его обработать — из-за перегрузки, технического обслуживания или исчерпания ресурсов.

Как работает

503 возникает в нескольких сценариях:

  • Перегрузка upstream: Nginx не может подключиться к PHP-FPM/Node.js — все воркеры заняты
  • Maintenance mode: намеренный 503 при обновлении сайта
  • Rate limiting: превышен лимит соединений (хотя правильнее возвращать 429)
  • Нет upstream: бэкенд-сервис упал, Nginx не может к нему подключиться

PHP-FPM возвращает 503 при исчерпании пула воркеров (pm.max_children). Настройка в /etc/php/8.2/fpm/pool.d/www.conf: увеличение pm.max_children решает проблему перегрузки, но требует достаточного объёма RAM.

Для плановых работ 503 — правильный выбор. Nginx может отдавать статическую страницу обслуживания:

error_page 503 /maintenance.html;
location /maintenance.html {
    root /var/www/maintenance;
    internal;
}

История

503 определён в RFC 7231. До широкого распространения load balancers 503 был относительно редким. С микросервисами и облачными архитектурами 503 стал обычным явлением: один из сервисов в цепочке перегружен — весь запрос возвращает 503 пользователю. Circuit breaker паттерн помогает изолировать сбойные сервисы.

На что обращать внимание

Важный HTTP-заголовок при 503: Retry-After — указывает клиенту, через сколько секунд повторить запрос. Поисковые роботы Googlebot и Yandex Bot уважают 503 с Retry-After — не исключают страницу из индекса при кратковременной недоступности.

Мониторинг 503 через Grafana — обязателен для продакшн. Всплеск 503 — сигнал о перегрузке или сбое. Проверьте journalctl и логи приложения. Превентивная мера — мониторинг утилизации CPU и RAM с алертами до достижения критических порогов.

503 при деплое и Rolling Update

При деплое новой версии приложения важно избегать 503. Стратегии zero-downtime deploy:

  • Blue-Green: поднять новую версию параллельно, переключить трафик через Nginx upstream, старую отключить
  • Rolling update: последовательно обновлять экземпляры по одному, остальные принимают трафик
  • Canary: направить 5% трафика на новую версию, постепенно увеличивать процент

Для single-server деплоя (распространённый случай на VPS) помогает правильная последовательность: скопировать файлы → запустить миграции БД → перезапустить приложение с systemctl reload (graceful reload без разрыва активных соединений) → проверить статус.

Nginx upstream с несколькими бэкендами автоматически исключает недоступный бэкенд из ротации при получении 503 — это базовый health check. Параметры max_fails=3 fail_timeout=30s определяют, сколько ошибок подряд нужно для исключения и на сколько секунд.

SEO-аспект: Google Search Console фиксирует 503 при краулинге. Кратковременный 503 с заголовком Retry-After: 3600 не причинит вреда позициям — бот вернётся через час. Но если сайт возвращает 503 несколько дней подряд, страницы начнут выпадать из индекса. Мониторинг доступности с алертами на email/Telegram — обязательный элемент для любого коммерческого сайта.

Другие термины