что делать если вылезает ошибка 503
Как исправить ошибку 503 Service Unavailable
Разбираемся, что означает ошибка 503 Service Unavailable, из-за чего она может возникнуть и что делать, чтобы убрать её с сайта.
Что внутри
Что такое ошибка 503
Ошибка 503 Service Unavailable — это код состояния HTTP, один из стандартных ответов сервера на запрос браузера. Примеры других кодов HTTP: 403 Forbidden, 404 Not Found или 500 Internal Server Error.
Сервер отправляет один из таких кодов каждый раз, когда вы открываете в браузере новую страницу или переходите по ссылке. Даже если сайт нормально загрузился и никакой ошибки не было, отправляется код HTTP 200 OK.
Конкретно этот код HTTP — 503 Service Unavailable — означает, что прямо сейчас сервер не готов обработать запрос, потому что перегружен или на нём проводятся технические работы.
Как может выглядеть ошибка 503
Если на вашем сайте возникнет 503 ошибка, вы увидите стандартную страницу, которая будет отличаться в зависимости от веб-сервера на вашем хостинге. Вот несколько примеров.
Иногда страницу с этой ошибкой оформляют в общем дизайне сайта или приложения. Но так обычно делают только крупные бренды, потому что 503 ошибка встречается довольно редко. Вот пара примеров.
У движка или фреймворка, на котором сделан ваш сайт, тоже может быть своя страница 503 ошибки. Например, в панели управления WordPress она может выглядеть вот так.
В зависимости от дизайна будет отличаться и текст на странице. Не факт, что это будет именно «Ошибка 503» или «503 Service Unavailable». Вот некоторые варианты, которые могут вам повстречаться:
Почему возникает ошибка 503
Как мы уже выяснили, когда на сайте возникает 503 ошибка Service Unavailable, это значит, что сервер либо перегружен, либо на нём проводятся технические работы. Перегрузка может случиться по разным причинам. Вот несколько из них:
Как 503 ошибка влияет на SEO
Обычно, когда поисковый робот заходит на страницу и видит ошибку с кодом 5хх, он пробует зайти на неё ещё раз в пределах суток, рассчитывая на то, что владелец сайта решит проблему. Если ошибка возникает и при повторном посещении, бот может исключить страницу из индекса.
Проверить, выпала ли страница из индекса, можно в Google Search Console. Для этого войдите в консоль, введите в строке поиска URL страницы и нажмите Enter. Сервис проверит страницу и покажет её статус. Если страницы уже нет в индексе, нажмите «Запросить индексирование», чтобы повторно её туда добавить.
Также Search Console поможет вам своевременно обнаруживать ошибки. Для этого просто периодически проверяйте раздел «Покрытие» на главной странице панели в меню слева. В него будут записываться все ошибки на сайте.
Как исправить ошибку 503
Сначала убедитесь, что ваш провайдер не проводит техобслуживание сервера. У нас на хостинге в Панели клиента есть специальный раздел с уведомлениями, где мы предупреждаем о любых технических работах.
Также 503 ошибка может ненадолго возникнуть, если запустить обновление плагинов или темы на сайте с WordPress. Когда всё обновится, ошибка исчезнет сама.
Если же ошибка не проходит или периодически повторяется, дело всегда на стороне сервера. Чтобы исправить ошибку, понадобится доступ на хостинг. Поэтому, если вы просто зашли на чужой сайт и увидели код ошибки 503, единственный вариант — подождать. А если вы владелец сайта, вот несколько советов, как её исправить.
Проверьте логи
Это поможет сразу точно определить причину ошибки, а не перебирать все варианты подряд. В зависимости от вашего веб-сервера, логи будут по умолчанию храниться в одной из системных папок:
Если вы управляете сервером при помощи какой-то панели управления, логи могут храниться в других папках. Например, в панели управления Webuzo, которую мы предоставляем бесплатно у себя на VPS, логи будут расположены по пути /usr/local/apps/apache/logs/vashdomen.err.
Доступ к этим файлам будет, только если у вас VPS или выделенный сервер. Если у вас виртуальный хостинг, по умолчанию логи будут в файле error_log, который лежит в корневой папке домена, но CMS могут переопределять путь к этому файлу в другие папки. Плюс некоторые записи могут попадать не туда, а в основной лог, к которому есть доступ только у провайдера. Поэтому, если у вас там ничего нет, напишите в службу поддержки и попросите предоставить последние строки.
Если по логам ничего не понятно, попробуйте советы ниже или погуглите фрагмент ошибки. Возможно, у кого-то была такая же проблема и её решение описали на каком-нибудь форуме. Либо свяжитесь с техподдержкой вашего хостинг-провайдера и попросите их помочь.
Оптимизируйте работу сайта
Отправлять массовые рассылки со своего сервера, особенно если у вас большая база подписчиков, лучше ночью, когда нагрузка на сайт минимальная. Днём этот процесс может вызвать 503 ошибку или как минимум замедлить работу сайта. Если отправляете рассылки при помощи стороннего сервиса, можно запускать и днём, разницы нет.
Плохо проиндексированные таблицы или большое количество MySQL-запросов могут создавать чрезмерную нагрузку на базу данных. Если разбираетесь, проанализируйте нагрузку при помощи команд show global status, vmstat, top. Если нет, обратитесь за советом к разработчику.
Отдельный момент — на любом сайте стоит использовать кэширование, потому что оно здорово разгружает сервер. Это не значит, что ошибка 503 перестанет возникать, как только вы его подключите, но часть нагрузки точно уйдёт.
Если у вас сайт на WordPress или другом движке, кэширование можно настроить при помощи модулей вроде LiteSpeed Cache. Он есть для многих популярных CMS. А если сайт разрабатывали с нуля, обсудите этот вопрос с разработчиками.
Отключите плагины
На сайте с WordPress перегрузка сервера может произойти из-за проблемы с плагинами. Чтобы это проверить, временно отключите их и снова зайдите на сайт.
Скорее всего, из-за ошибки у вас не будет доступа в консоль WordPress, поэтому отключать плагины придётся в панели управления хостингом. Вот как сделать это на хостинге с cPanel.
На главной странице панели найдите блок «Файлы» и перейдите в раздел «Менеджер файлов».
Затем перейдите в корневую папку домена, откройте в ней папку wp-content и поменяйте название папки plugins. Это отключит все плагины.
Корневая папка основного домена на хостинге обычно называется public_html, а дополнительного — так же, как и дополнительный домен.
Если это помогло и ошибка 503 исчезла, остаётся выяснить, какой именно плагин её вызвал. Для этого переименуйте обратно папку plugins, зайдите в неё и по очереди переименовывайте каждую папку, пока не найдёте источник ошибки.
Отключите тему
Тема вашего сайта на WordPress тоже может быть причиной 503 ошибки. Решение будет таким же — отключить текущую тему и проверить, помогло ли это. Но делается всё немного по-другому. Просто отключить папку с темами не поможет, вместо этого нужно изменить используемую тему в базе данных. Вот как это делается в cPanel.
На главной странице панели найдите блок «Базы данных» и перейдите в раздел «phpMyAdmin».
В phpMyAdmin выберите слева базу данных вашего сайта и перейдите в таблицу wp_options. Затем в верхнем меню перейдите в раздел «Search», в строке option_name введите слово «template» и нажмите «Go».
Найдётся именно та строка, в которой указана текущая тема вашего сайта. Кликните два раза по её названию или нажмите в строке кнопку «Edit» и поменяйте название темы на twentytwentyone. Это тема, которая устанавливается по умолчанию.
Если после этого ошибка 503 исчезла, значит дело в теме. Дальше можно попробовать её переустановить или восстановить одну из последних резервных копий. Перед переустановкой темы на всякий случай сделайте резервную копию сайта.
Ограничьте частоту сканирования сайта
Иногда поисковый робот Google или какого-то другого поисковика может серьёзно нагружать сайт в момент сканирования. В теории это может стать дополнительным фактором, который повлияет на работоспособность сервера и вызовет 503 ошибку. Если дело именно в боте, вы поймёте это по логам. Решением в этом случае будет ограничить частоту сканирования. Вот как сделать это для бота Google: инструкция по настройке частоты сканирования.
Перейдите на более мощный тариф
Если ни один из советов не помог, возможно, вашему сайту просто больше не хватает ресурсов текущего тарифного плана. Такое может быть, если вы используете дешёвый хостинг. Чем он дешевле, тем меньше каждому пользователю доступно ресурсов и тем больше ограничений.
Это нормально для развивающегося проекта — со временем переходить на более мощный тариф, но не факт, что дело именно в тарифе. Сначала стоит убедиться, что сайт оптимизирован. Рекомендуем для начала написать в техподдержку провайдера и рассказать о том, что вы уже сделали. Пусть их специалисты оценят ситуацию и посоветуют, что делать.
Что дальше
Если вы не нашли решения в статье, значит у вас специфическая ситуация. Пришлите в комментариях к этой статье текст из логов, попробуем вместе разобраться.
Если покупали хостинг у нас, присылайте логи сразу на почту support@hostiq.ua, чтобы вопросом занялись наши технические специалисты.
Переезжайте к нам на хостинг
Если вам нужен новый тариф, переезжайте к нам. У нас круглосуточная поддержка, которая решает проблемы быстро и в любое время. Даже если вопрос возникнет ночью в выходной или в праздничный день.
Мы готовы перенести сайт за вас и проверить, чтобы всё исправно работало. А если время действия старого хостинга ещё не истекло, пришлите квитанцию об оплате и мы добавим оставшееся время к вашему хостингу у нас.
HTTP Error 503. Service Unavailable: случай в поддержке хостинга
Начало
Хостинг предоставляет пользователям типичный стек Linux + Apache + Mysql + PHP и оболочку для управления. В нашем случае это ISP Manager 5 business на базе Centos 7 с конвертацией в CloudLinux. Со стороны административной части, CloudLinux предоставляет инструменты для управления лимитами, а так же PHP-селектор с различными режимами работы (CGI, FastCGI, LSAPI).
В этот раз к нам обратился клиент со следующей проблемой. Его сайт на движке WordPress периодически начал отдавать 503 ошибку, о чём он нам и сообщил.
Коды ответа, начинающиеся с 50х, относятся к проблемам на стороне сервера. Это могут быть проблемы как самого сайта, так и веб-сервера, который их обслуживает.
Типичные ситуации, при которых мы получаем следующие ошибки:
При выполнении диагностики данных ошибок, первым делом проверяем журналы веб-сервера. Обычно, этого достаточно, чтобы определить виновника и исправить проблему.
Касаемо 503 ошибки в нашем случае, в логах мы видели запись:
[lsapi:error] [pid 49817] [client x.x.x.x:6801] [host XXX.XX] Error on sending request(GET /index.php HTTP/1.0); uri(/index.php) content-length(0): ReceiveAckHdr: nothing to read from backend (LVE ID 8514), check docs.cloudlinux.com/mod_lsapi_troubleshooting.html
На основании только этого лога, определить в чём может быть проблема не представлялось возможным.
Первичная диагностика
Изначально, мы проверили статистику превышения лимитов пользователем. Незначительные превышения были зафиксированы за предыдущие дни, но ошибки в журналах были свежие, более того они появлялись в журнале с периодичностью от одной до нескольких минут.
Так же мы изучили рекомендации CloudLinux, по приведённой в журналах ошибок ссылке.
Изменение каких-либо параметров результата не принесло.
Сайт использовал базу данных на сервере Mysql 5.7, который работает на этом же сервере в контейнере Docker. В логах контейнера присутствовали сообщения:
Как раз, среди этих сообщений были сообщения о прерванном подключении исследуемого сайта. Это дало предположение, о том, что подключение к СУБД выполняется некорректно. Для проверки мы развернули копию сайта на тестовом домене, сконвертировали базу данных сайта под нативную в Centos 7 версию СУБД 5.5.65-MariaDB. На тестовом сайте выполнили несколько сотен запросов с помощью утилиты curl. Ошибку воспроизвести не удалось. Но этот результат был предварительным и после конвертации БД на рабочем сайте проблема так и осталась.
Таким образом, проблема некорректного подключения к СУБД была исключена.
Следующим предположением было проверить — нет ли проблем с самим сайтом. Для этого подняли отдельный виртуальный сервер, на нём подняли максимально схожее окружение. Единственное существенное отличие — отсутствие CloudLinux. На тестовом сервере проблему воспроизвести не удалось. Итак, мы определили, что в коде сайта всё в порядке. Тем не менее, пробовали так же отключать плагины WordPress, но проблема так же сохранялась.
В результате, пришли к тому, что проблема на нашем хостинге.
В ходе анализа журналов других сайтов было обнаружено, что проблема наблюдается на многих из них. Порядка 100 шт. на момент проверки:
В ходе тестирования обнаружили, что только что установленная чистая CMS WordPress также периодически выдаёт ошибку 503.
Примерно за 2 месяца до этого мы проводили работы по модернизации сервера, в частности изменили режим работы Apache с Worker на Prefork, с целью получить возможность использовать PHP в режиме LSAPI, вместо медленного CGI. Было предположение, о том, что это могло повлиять, либо требуются какие-то дополнительные настройки Apache, но вернуть обратно режим Worker мы уже не могли. В ходе изменения режима работы Apache выполняется изменение всех конфигов сайтов, процесс не быстрый и не всё могло пройти гладко.
Корректировка настроек Apache так же не дала желаемого результата.
Попутно искали схожие проблемы в поисковых системах. На одном из форумов участники утверждали, что проблема у хостера и нужно его менять, если проблему не решают. Звучит не очень оптимистично, когда ты находишься с другой стороны, но и клиента понять можно. Зачем ему нерабочий хостинг.
На данном этапе мы собрали имеющуюся информацию и результаты проведённых работ. С ними обратились в поддержку CloudLinux.
Детальная диагностика
В течение нескольких дней сотрудники поддержки CloudLinux вникали в проблему. В основном рекомендации были относительно установленных лимитов пользователей. Этот вопрос мы так же проверяли. При отключенных лимитах (Опция CageFS для пользователя) и с включенными лимитами в режиме PHP как модуль Apache проблема не наблюдалась. Исходя из этого, было сделано предположение, что каким-то образом оказывает влияние CloudLinux. В итоге, к концу недели запрос был эскалирован на 3-ий уровень поддержки, но решения пока не было.
Попутно изучали документацию Apache по режимам работы CGI и LSAPI, подняли второй экземпляр Apache на сервере хостинга на другом порту с тестовым сайтом, исключили влияние Nginx, отправляя запросы напрямую к Apache и получая те же коды ошибок.
Сдвинуться с мёртвой точки помогла документация LSAPI, как раз по диагностике 503 ошибки:
www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:php:503-errors
В секции Advanced Troubleshooting предлагается выполнять трассировку найденных в системе процессов:
Команда была доработана, с целью записи всех процессов в файлы с указанием их идентификаторов.
При просмотре файлов трассировок, мы видим в некоторых одинаковые строки:
Если взглянуть на описание структуры сигналов, отправляемых процессами, то увидим, что
Указывает на идентификатор процесса, отправившего сигнал.
На момент изучения трассировок, процесса с PID 42053 в системе уже нет, поэтому в процессе захвата трассировок решили отслеживать так же процессы, отправившие сигнал SIGHUP.
Под спойлером описаны действия, которые позволили определить что это за процесс, а так же получить его трассировку и дополнительную информацию, о том, каким процессам он отправляет сигнал SIGHUP.
Ждём пока в консоли 1 появятся сообщения, при этом в консоли 4 видим статус запроса с кодом ответа 503, прерываем выполнение в консоли 4.
Данный процесс выполнялся в системе с периодичностью раз в минуту.
Делаем трассировку нескольких процессов cagefsctl, чтобы отследить хотя бы один от начала до конца:
Далее изучаем что он делал, например:
Так же были получены идентификаторы процессов, которые были завершены сигналом SIGHUP. Завершённые процессы были процессами PHP, выполняющимися в данный момент.
Полученные данные были переданы в поддержку CloudLinux с целью уточнить легитимность данного процесса и должен ли он работать с такой периодичностью.
Единственная зацепка в данном случае осталась — проверить, кто является родительским процессом cagefsctl.
Результат не заставил себя долго ждать и какого же было наше удивление — родительским процессом для cagefsctl являлся процесс ispmgrnode. Это было немного странно, потому что уровень журналирования для ISP Manager был задан максимальным и в ispmgr.log не увидели вызов cagefsctl.
Теперь данных было достаточно, чтобы обратиться и в поддержку ISP System.
Итоги
Проблема была спровоцирована после выполнения обновления ISP Manager. В целом, обновление ISP Manager — штатная ситуация, но она привела к запуску процесса синхронизации, который завершался с ошибкой и перезапускался ежеминутно. Процесс синхронизации вызывал за собой процесс cagefsctl, который в свою очередь завершал процессы PHP.
Причиной зависания процесса синхронизации стали проведённые на хостинге работы по модернизации оборудования. За несколько месяцев до возникновения проблемы, в сервер был установлен PCI-e NVMe-накопитель, создан раздел XFS и смонтирован в каталог /var. На него были перенесены в том числе и файлы пользователей, но не обновились дисковые квоты. Опций монтирования было не достаточно, требовалось так же изменить тип файловой системы в параметрах ISP Manager, т.к. она вызывает команды обновления дисковых квот. Для Ext4 и XFS эти команды отличаются.
Таким образом, проблема дала о себе знать спустя несколько месяцев после проведения работ.
Выводы
Мы сами создали проблему, но это было не ясно до последнего момента. На будущее, будем стараться учесть как можно больше нюансов. Благодаря помощи более подготовленных коллег из поддержки CloudLinux и ISP System, проблема была решена. Теперь наш хостинг работает стабильно. А нами был получен опыт, который пригодится нам в будущей работе.
Ошибка 503
Что означает код ошибки «http error 503 the service is unavailable»?
В появлении ошибки 503 многие обвиняют сервер. Коды 5xx ошибок относятся к категории серверных, но возникают не только из-за проблем в его работе. Вот так обычно выглядит эта ошибка:
Код 503 означает, что сервер, где базируется ресурс, не принимает запросы на заданный адрес. Процедура приема запросов происходит беспрерывно, для всех аккаунтов выделено лимитированное число процессов для обработки запросов. Обработка запросов происходит поочередно. На длину очереди установлено ограничение. При превышении лимита прием запросов прекращается, а пользователю возвращают «error 503». Для решения проблемы достаточно прекратить подачу запросов с аккаунта.
Как узнать, кто виноват в ошибке 503?
Если Вы видите ошибку «http error 503 the service is unavailable» — и не знаете, проблема ли это избыточной нагрузки на Ваш сайт, или запросами перегружен сервер хостера, попробуйте открыть «соседей» по IP адресу.
Узнать их можно онлайн, например, на сервисе cy-pr.com:
Если с их сайтами все в порядке, то скорее всего ошибка возникла у Вас по одной из изложенных ниже причин.
Причины возникновения и способы исправить ошибку на удаленном сервере
Чтобы снизить частотность ошибки 503 нужно детально подойти к рассмотрению причин возникновения проблемы.
Передача больших файлов с использованием скриптов.
Отправка посредством PHP иногда вызывает зависание. Громоздкие файлы лучше не нагружать скриптами, работающими не все время. Если скрипт прекращает работать, файл перестает передаваться, а процесс работы веб сервера остается на время инициированным. При большом количестве одновременных загрузок это может привести к 503 ошибке.
Удаленный сервер возвратил ошибку 503 — сервер недоступен из-за большого количества запросов к внешним ресурсам.
Избегайте удаленных соединений с другими серверами, так как доступ к другим серверам иногда прекращается. Это провоцирует систематические запросы на связь с удаленным сервером. Если такое соединение требуется постоянно, то выставляйте минимальное значение таймаута для ожидания отклика. Отладка бесперебойной связи с удаленными серверами должна стать важной частью оптимизации.
Также для вставки используют коды, функции и прочие включения. Если они размещены на едином аккаунте, то не применяйте их в форме запросов на внешний URL-адрес, лучше использовать форму локальных путей, чтобы исключить дополнительную нагрузку на сервер.
Например, автор этого сайта явно переборщил с информерами:
Конечно, это не станет причиной 503-й ошибки, но при каждой загрузке страницы – это лишних 15 внешних запросов, а рост одновременных запросов рано или поздно приведет к тому, что сайт станет недоступен.
Неоптимизированные «тяжелые» или устаревшие модули CMS
Если сервер возвратил 503 ошибку, можно попробовать поочередно отключать модули, плагины, надстройки и другие дополнения. При этом вы заметите изменение скорости загрузки сайта. Это наблюдение позволит принять решение о замене или исправлении поврежденного дополнения. Удалите или отключите устаревшие или ненужные вам дополнения, если они включены в дистрибутивы CMS.
Медленные запросы к базе данных MySQL
Проблему решают несколькими путями: используют кэширование, оптимизируют запросы, индексируют таблицы данных по столбцам (упорядочить и сортировать). Если принятые меры окажутся недейственными, то стоит рассмотреть вариант замены скрипта на болееоптимальный вариант.
Вы можете купить домены RU, РФ, SU со скидкой!
Большое число одновременных запросов к серверу
Старайтесь свести к минимальному значению сумму запросов. Запросы создают не только пользователи вашего ресурса. Они поступают от индексирующих поисковых роботов и др. Число запросов увеличивается, если использовано чрезмерное число URL на файлы, загруженные с излишним количеством запросов.
Выходом станет объединение всех файлов в один. Запросы отправляются из чатов, из блоков сайта, при открытии множества браузерных вкладок, при применении iframe кодов на ресурсе, его использовании прочими сайтами. Увеличивают число запросов и Dos-атаки, флуд, спам.
Почтовая рассылка
Рассылки влияют на скорость загрузки, но как инструмент связи с постоянной аудиторией сайта — они незаменимы. Чтобы сократить загруженность сайта, их подвергают оптимизации. Скрипт, запускающий рассылки, добавляют в планировщик. Время инициации подобных скриптов назначают на ночь или на другое время, когда загруженность сервера уменьшается.
Если Вы всерьез ведете интересную рассылку – рекомендуем использовать сервисы, позволяющие отслеживать ее эффективность, например mailchimp, предлагающий отправку 12 000 писем в месяц бесплатно:
Большое число одновременных запросов к серверу
В скриптах делают запись на выполнение действий согласно установленному распорядку, если этого требует поставленная задача. Это расписание выполняется одновременно с запросами пользователей. Чтобы уменьшить нагрузку, переносите расписание в планировщик, при доступности планировщика.
Если вы провели оптимизацию, применяете кеширование и минимизировали запросы, а ресурсов еще не хватает, поэкспериментируйте с подбором адаптированного тарифного плана. Если выполненных действий окажется недостаточно, перейдите на виртуальный или выделенный сервер.
Пример задания, выполняющегося долгое время – синхронизация данных для интернет-магазинов с более чем 50 000 позиций. Поскольку каждый товар имеет от 20 до 100 полей в базе данных (от арткула до ссылок на дополнительные фото и условия доставки) – синхронизация данных может выполняться долго, при этом она создает десятки тысяч запросов к серверу.
iPipe – надёжный хостинг-провайдер с опытом работы более 15 лет.
Что означает ошибка http 403 Forbidden — доступ запрещен Уведомление 403 (Forbidden) – причисляется к серверным ошибкам, но оно не…