Ошибка 503 Service Unavailable — что значит и как исправить
HTTP 503 Service Unavailable — код, который сервер сознательно отправляет когда временно не может обработать запрос. Ключевое слово — временно. В отличие от 500 (что-то сломалось) или 502 (приложение не отвечает), 503 — это сознательный ответ сервера: «я знаю что не работаю, попробуй позже».
- 🚨 Сайт показывает «503 Service Unavailable» или «Сервис временно недоступен»
- 🔍 Причина — сервер намеренно отдаёт 503: перегрузка, плановые работы, защита
- 🛠️ Чинится уменьшением нагрузки или завершением плановых работ
- ⏰ Обычно временное явление
Частые причины
Section titled “Частые причины”1. Плановые работы (maintenance mode)
Section titled “1. Плановые работы (maintenance mode)”Самая невинная причина. Админ включил режим «сайт на обслуживании», nginx или CMS отдаёт 503 всем посетителям. WordPress, Bitrix, Laravel — у всех есть такой режим.
2. Перегрузка сервера
Section titled “2. Перегрузка сервера”CPU на 100%, очередь запросов переполнена, новые запросы система не принимает чтобы не упасть совсем. Это «защитный» 503.
3. Rate limiting
Section titled “3. Rate limiting”Включены лимиты на запросы (например, limit_req в nginx). Если посетитель/бот делает слишком много запросов за единицу времени — получает 503.
4. DDoS-защита
Section titled “4. DDoS-защита”Cloudflare/Stormwall/CDN-провайдер активировал защиту от атаки. Подозрительные запросы получают 503 (или CAPTCHA).
5. Очередь приложения переполнена
Section titled “5. Очередь приложения переполнена”Например, PHP-FPM с настройкой pm.max_children = 10. При 50 одновременных запросах 40 из них получат 503 пока workers заняты.
6. Балансировщик не нашёл живой бэкенд
Section titled “6. Балансировщик не нашёл живой бэкенд”Если за балансировщиком стоят 2 сервера приложения и оба упали — балансировщик отдаёт 503.
Как диагностировать
Section titled “Как диагностировать”1. Проверить включён ли maintenance mode
WordPress: проверьте есть ли файл .maintenance в корне сайта. Если есть — это режим обслуживания.
Bitrix: /bitrix/admin/sites_edit.php — настройки сайта.
nginx: проверьте конфиг на наличие правил типа:
return 503;2. Посмотреть нагрузку:
uptime # load averagetop # процессыhtop # удобнееiostat -x 1 # нагрузка на дискЕсли load average > количество CPU × 2 — сервер перегружен.
3. Лог nginx:
sudo tail -100 /var/log/nginx/error.logТипичные сообщения:
limiting requests, excess: ... by zone "..."— сработал rate-limit1024 worker_connections are not enough— превышен лимит соединений nginxupstream prematurely closed connection— приложение убилось во время обработки
4. Проверить — это от nginx или от приложения:
curl -I https://example.com/some-pageПосмотрите на заголовок Server: и X-Powered-By: в ответе — поможет понять кто отдал 503.
Как исправить
Section titled “Как исправить”Сценарий A: maintenance mode (вы сами включили)
Выключите. WordPress: удалите .maintenance из корня. Bitrix: в админке снимите галку «Сайт закрыт».
Сценарий B: перегрузка сервера
- Краткосрочно — перезагрузить сервис, упавший в swap
- Среднесрочно — оптимизировать тяжёлые запросы, добавить кэш (Redis, Memcached)
- Долгосрочно — увеличить ресурсы сервера или мигрировать на более мощный
Сценарий C: DDoS-атака
- Подключите Cloudflare (бесплатный план есть)
- Включите режим «Under attack» если уже подключены
- Анализируйте логи — узнайте кто атакует, заблокируйте по IP
Сценарий D: rate-limit срабатывает на легитимных пользователей Поднимите лимит в nginx:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;Или исключите ботов поисковиков и наш MonisiteBot — см. Whitelisting в статье User-Agent.
Сценарий E: workers PHP-FPM не справляются
Увеличьте pm.max_children в /etc/php/8.2/fpm/pool.d/www.conf. Но учитывайте память — каждый worker ест 50-200 МБ.
Заголовок Retry-After
Section titled “Заголовок Retry-After”«Воспитанный» 503 обычно содержит заголовок Retry-After: 60 — это значит «попробуйте через 60 секунд». Браузер и клиенты могут автоматически повторить запрос.
Если ваш сервер отдаёт 503 — добавьте Retry-After. Это помогает поисковикам не понижать ваш сайт в выдаче (они понимают что вы временно недоступны, а не навсегда).
Если не разработчик
Section titled “Если не разработчик”Если вы видите 503 на своём сайте, и вы не делали плановых работ:
- Подождите 10-15 минут — часто такие штуки рассасываются сами
- Спросите у хостера — нет ли DDoS-атаки на ваш IP или перегрузки
- Не паникуйте — 503 это «временно», не «навсегда»
- Подключите мониторинг чтобы видеть частоту — если 503 повторяется часто, это серьёзный сигнал
Чем поможет Monisite
Section titled “Чем поможет Monisite”503 коварен тем что часто самопроходит за минуты. Без мониторинга вы можете годами не подозревать что ваш сайт падает каждый вечер в пиковые часы.
Monisite:
- Каждую минуту проверяет ваш сайт из 3 регионов
- Сразу алертит при 503
- Показывает закономерности: «503 случается каждый день с 19:00 до 21:00» = пиковая нагрузка
- Бесплатно