10 мин чтения Скорость, безопасность, хостинг

Ошибка 503: когда сервер перегружен и что делать владельцу

ошибка 503 на сайтеошибка 503
Содержание10

Ошибка 503 Service Unavailable значит, что сервер жив, но прямо сейчас не может обработать запрос: он перегружен или закрыт на обслуживание. В отличие от 500, это временный отказ, после которого сайт должен вернуться сам. Если 503 держится часами или повторяется каждый вечер, сайт упирается в лимиты, и их нужно искать.

Что значит ошибка 503

Ошибка 503 — «сервис временно недоступен». Спецификация HTTP (RFC 9110) описывает её так: сервер сейчас не может обработать запрос из-за временной перегрузки или планового обслуживания, и это, скорее всего, пройдёт через некоторое время. Вместе с ответом сервер может прислать заголовок Retry-After — подсказку, сколько подождать перед повтором.

MDN называет две главные причины: сервер закрыт на обслуживание или перегружен. В справочнике кодов Яндекс Вебмастера формулировка та же: ошибка возникла из-за временной перегрузки или отключения сервера на техническое обслуживание.

Есть тонкость, которая сбивает при диагностике. RFC отмечает: при перегрузке сервер не обязан отвечать 503 — некоторые серверы просто отклоняют соединение. Поэтому одна и та же перегрузка в разные минуты выглядит то как 503, то как обрыв загрузки, то как 504 от прокси.

Ошибка 503 — честное «зайдите позже». Сервер не сломан, но сейчас не справляется или закрыт на работы.

Почему сервер отвечает 503

Ответ 503 отдаёт не только сам сервер, но и всё, что стоит перед сайтом: прокси, защита от ботов, панель хостинга. Вот частые источники:

  • Пик нагрузки — рекламная кампания, рассылка, распродажа. MDN пишет, что приложения отклоняют запросы с 503, когда упираются в пороги памяти, процессора или пула соединений.
  • Лимиты тарифа хостинга — на виртуальном хостинге число процессов и доля процессора ограничены. Сайт выходит за лимит, и хостинг отказывает лишним запросам.
  • Ограничение частоты в nginx — модули limit_req и limit_conn по умолчанию отклоняют лишние запросы именно кодом 503.
  • Режим техработ — CMS или администратор закрыли сайт на обновление и забыли открыть.
  • Боты и атаки — парсеры, агрессивные краулеры, DDoS съедают ресурсы, предназначенные посетителям.
  • Остановленный бэкенд — PHP-FPM или приложение за прокси перезапускается, и прокси временно отвечает отказом.

Если 503 появляется в одно и то же время, ищите расписание: резервное копирование, импорт каталога, задачи cron. Если совпадает с рекламой или рассылкой — это пик посетителей.

Полезно посмотреть и на саму страницу ошибки. Фирменная заглушка хостинга с логотипом провайдера значит, что отказал хостинг или его защита, а сайт до запроса даже не дошёл. Голая строка Service Unavailable от nginx указывает на ограничение частоты или на бэкенд за прокси. Страница в дизайне сайта с текстом про техработы — режим обслуживания CMS.

503 или 429: какой код при ограничении запросов?

Когда сервер режет запросы одного клиента — бота, парсера, слишком активного пользователя, — правильнее отвечать 429 Too Many Requests. MDN прямо разводит коды: при ограничении запросов конкретных клиентов уместен 429, а 503 оставляют для состояния всего сервера.

Здесь у nginx свой подвох. Модуль limit_req по умолчанию отвечает кодом 503, и владелец видит в журнале «сервис недоступен», хотя сервер в порядке и отказ получил один бот. Код можно переопределить директивой limit_req_status:

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

server {
    location / {
        limit_req zone=perip burst=20;
        limit_req_status 429;
    }
}

Числа в примере условные: порог подбирают по журналу запросов конкретного сайта. Со стороны поиска коды тоже различаются. Яндекс не учитывает заголовок Retry-After в ответе 429, а Google воспринимает и 429, и 5xx как сигнал перегрузки и замедляет обход.

Мнение. Если ограничение частоты запросов в nginx срабатывает на ботов, переключите его на 429: в журналах станет видно, где перегрузка сервера, а где отсечённый парсер.

Как понять, что именно перегружено?

Перед тем как покупать тариф мощнее, выясните, кто съедает ресурсы. Порядок такой:

  1. Снимите код ответа

    curl -I https://site.ru/ покажет, 503 это, 502 или 504, и есть ли заголовок Retry-After.

  2. Поймайте время

    Запишите, когда появляется ошибка: постоянно, в пики посещаемости или по расписанию.

  3. Откройте журналы сервера

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

  4. Проверьте панель хостинга

    Графики процессора, памяти и числа процессов покажут, упирается ли сайт в лимиты тарифа.

  5. Сверьте с посещаемостью

    В Метрике есть отчёт «Нагрузка на сайт» в группе «Мониторинг»: он показывает максимальную нагрузку от посетителей по дням. Справка оговаривает, что мониторингу нужен трафик больше 100 просмотров страниц в неделю.

Если нагрузка на сервере высокая, а посетителей в Метрике мало, ресурсы съедают роботы. Метрика роботов почти не видит, поэтому смотрите журнал доступа: какие User-Agent и адреса делают больше всего запросов.

Что делать с ошибкой 503 прямо сейчас

Первая задача — вернуть сайт посетителям, вторая — найти причину. Последовательность для владельца:

  • 01 Проверьте режим техработ

    Если сайт закрывали на обновление, убедитесь, что режим выключен.

  • 02 Отключите тяжёлое

    Остановите импорт, отложите резервное копирование, выключите ресурсоёмкий модуль на время пика.

  • 03 Отсеките лишних ботов

    Заблокируйте агрессивные краулеры и парсеры по журналу доступа, но не трогайте поисковых роботов.

  • 04 Включите кэширование

    Готовые страницы из кэша отдаются без PHP и базы данных и снимают основную нагрузку.

  • 05 Напишите в поддержку хостинга

    Спросите, в какой лимит упирается сайт, и попросите временно его поднять.

Где ошибаются: лечат 503 бесконечной перезагрузкой PHP, блокируют всех ботов подряд вместе с поисковыми и сразу переезжают на дорогой сервер, не найдя, кто создаёт нагрузку. Переезд без диагностики переносит проблему вместе с сайтом.

Как закрыть сайт на техработы с кодом 503

Плановые работы — законный повод отдавать 503. Google в справке о приостановке сайта советует: если нужно срочно заблокировать сайт на один-два дня, показывайте вместо контента информационную страницу с кодом ошибки 503. Для более долгого закрытия этот способ уже не годится.

Правила из той же справки:

  • Retry-After — заголовок подсказывает, когда можно прийти снова. Значение — дата или число секунд.
  • Статичный HTML — страница-заглушка без внешних ресурсов, встроенные стили, ничего от упавшей CMS.
  • robots.txt не трогать — Google предупреждает, что 503 для robots.txt полностью заблокирует сканирование.
  • Проверка curl — после включения заглушки убедитесь, что сервер действительно отдаёт 503, а не 200.

Пример для nginx: весь сайт отвечает 503 со страницей-заглушкой, а robots.txt остаётся доступным.

server {
    server_name site.ru;
    root /var/www/site;
    add_header Retry-After 3600 always;
    error_page 503 /maintenance.html;

    location = /maintenance.html {
    }

    location = /robots.txt {
    }

    location / {
        return 503;
    }
}

Яндекс в справочнике кодов предлагает для техработ временный редирект 302. Разница в том, что 302 уводит посетителя и робота на другой адрес, а 503 оставляет их на месте с честным сообщением. Для коротких работ на том же адресе удобнее 503.

Как ошибка 503 влияет на поиск?

Короткая 503 поиску почти не вредит, длинная — вредит. Google пишет, что при ошибках 5xx и 429 его роботы временно замедляют сканирование, а уже проиндексированные адреса сохраняются в индексе, но в скором времени удаляются.

Факт. Google не рекомендует отдавать коды 500, 503 или 429 для снижения частоты сканирования дольше двух дней: могут возникнуть проблемы с показом контента сайта.

Яндекс строже к отдельной странице: страница с кодом ответа, отличным от 200 OK, не может попасть в поиск. Если робот пришёл во время 503, страница рискует выпасть до следующего обхода. Поэтому техработы планируют на время минимальной посещаемости и держат как можно короче.

Особый риск — 503 на главной из-за защиты от ботов, которая по ошибке режет поисковых роботов. Сайт работает у людей, а для поиска он недоступен. Проверьте ответ главной в инструменте Яндекс Вебмастера «Проверка ответа сервера».

Как не упираться в 503 снова

Повторяющаяся 503 — признак того, что сайт живёт на пределе ресурсов. Что помогает:

  • Кэш страниц — главная, каталог и статьи отдаются готовыми, без PHP и базы данных.
  • Тариф с запасом — лимиты процессов и памяти выше обычного пика, а не впритык.
  • Расписание тяжёлых задач — импорт и резервное копирование ночью, вне пиков.
  • Фильтр ботов — ограничение частоты с кодом 429 для агрессивных краулеров.
  • Мониторинг — внешняя проверка, которая сообщит о 503 раньше, чем позвонит клиент.

Кэш даёт самый большой выигрыш за наименьшие деньги: страница из кэша не запускает PHP и не ходит в базу, поэтому тот же сервер выдерживает заметно больше посетителей. Что ещё ускоряет сайт без программиста, разобрано в статье о том, почему сайт медленно загружается.

Граница: если сайт падает от каждой рассылки даже после кэша и смены тарифа, проблема в коде — тяжёлых запросах к базе, отсутствии индексов, неоптимальных модулях. Тогда нужен разбор приложения, а не новое железо. Как выбрать тариф и не попасть на скрытые лимиты, разобрано в статье про хостинг для сайта.

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

Источники

Частые вопросы

Ошибка 503 у всех или только у меня?

Откройте сайт через мобильный интернет или выполните curl с другого сервера. Если 503 только у вас, ваш адрес мог попасть под ограничение частоты запросов или фильтр защиты хостинга.

Почему 503 появляется только ночью?

Ночью обычно идут резервное копирование, импорт и задачи cron. Если они совпадают с обходом поисковых роботов, сервер не справляется. Разнесите задачи по времени или ограничьте их ресурсы.

Можно ли закрыть сайт с кодом 503 на неделю?

Не стоит. Google советует 503 для срочной блокировки на один-два дня. При долгом закрытии лучше оставить доступной главную страницу с кодом 200 и объяснением, что происходит.

Поделиться
ВКонтакте Telegram MAX
Рубрика статьи
Скорость, безопасность, хостинг
Ещё 33 статьи в рубрике →
Рядом в разделе
SEO для сайта Задумались над продвижением?
Мы объясним, как можно увеличить вашу прибыль за счет продвижения сайта.
Нужна консультация?
Мы постараемся ответить на все ваши вопросы

Расскажите о задаче — посчитаем смету

Ответьте на несколько вопросов: что за компания, какие разделы нужны, есть ли тексты и фотографии. Этого хватит, чтобы посчитать смету с фиксированной ценой и сроком — она бесплатна и ни к чему не обязывает.
Написать