Sign on service unavailable

Что такое ошибка 503 Service Unavailable и как ее исправить

О шибка 503 Service Unavailable возникает, когда веб-сервер временно не может обработать запрос. Почти всегда ошибка на самом сайте, и Вы ничего не можете с этим поделать, но можете попробовать еще раз позже. Тем не менее, есть несколько быстрых вариантов, которые Вы можете попробовать.

Что такое ошибка 503 Service Unavailable

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

Ошибка 503 отличается от ошибки 500 Internal Server. Ошибка 500 возникает, когда что-то мешает серверу обработать Ваш запрос, в то время как ошибка 503 на самом деле означает, что сервер в порядке — он может обрабатывать Ваш запрос и возвращает ошибку 503.

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

  • Http/1.1 Service Unavailable
  • 503 Error
  • 503 Service Temporarily Available
  • 503 Service Unavailable
  • Service Unavailable – DNS Failure
  • HTTP Error 503
  • HTTP 503
  • Error 503 Service Unavailable

Важно помнить, что ошибка 503 является ошибкой на стороне сервера. Это означает, что проблема существует с веб-сайтом, к которому Вы пытаетесь получить доступ, а не с компьютером. Это хорошие и плохие новости. Это хорошая новость, потому что нет ничего плохого в Вашем компьютере, и это плохая новость, потому что обычно Вы ничего не можете сделать, чтобы решить проблему с Вашей стороны.

Тем не менее, вот несколько вариантов, которые Вы можете попробовать.

Обновите страницу

Как мы уже упоминали, ошибка 503 указывает на временную проблему, и иногда эта проблема очень временная. Например, сайт может быть перегружен трафиком. Итак, всегда стоит попробоавть обновить страницу. Большинство браузеров используют клавишу F5 для обновления, а также предоставляют кнопку «Обновить» где-то в адресной строке. Это не часто исправляет проблему, но для ее выполнения требуется всего одна секунда.

Предупреждение: Обязательно обратите особое внимание, если ошибка возникает, когда Вы делаете платеж. Обновление страницы может заставить Вас платить дважды, поэтому следите за этим.

Проверьте, работает ли сайт у других людей

Всякий раз, когда Вы не можете связаться с сайтом (по какой-либо причине), Вы также можете проверить, есть ли у Вас проблемы с подключением, или если у других людей такая же проблема. Для этого есть много инструментов, но мы рекомендуем isitdownrightnow.com и downforeveryoneorjustme.com. Оба работают почти одинаково. Укажите URL-адрес, который Вы хотите проверить, и получите результат.

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

Перезагрузите свои устройства

Итак, Вы использовали инструмент проверки сайта и определили, что сайт не работает только у Вас. И Вы попробовали другой браузер и столкнулись с той же проблемой. Это говорит о том, что проблема, скорее всего, на Вашей стороне, но это не Ваш браузер.

Возможно, существуют некоторые странные, временные проблемы с Вашим компьютером или сетевым оборудованием (Wi-Fi, маршрутизатор, модем и т. д.). Простая перезагрузка компьютера и сетевых устройств может помочь устранить проблему.

Другая возможность заключается в том, что ошибка вызвана проблемой DNS, но на DNS-сервере, а не на Вашем компьютере. В этом случае Вы можете попробовать переключить DNS-серверы и посмотреть, будет ли проблема решена.

Связаться с веб-сайтом

Другой вариант — связаться с владельцем веб-сайта напрямую. Просмотрите их контактную информацию на веб-сайте и свяжитесь с ними о соответствующей странице. Если контактная форма отсутствует, Dы можете попытаться связаться с веб-сайтом в социальных сетях.

Источник

HTTP Error 503. Service Unavailable: случай в поддержке хостинга

Начало

Хостинг предоставляет пользователям типичный стек Linux + Apache + Mysql + PHP и оболочку для управления. В нашем случае это ISP Manager 5 business на базе Centos 7 с конвертацией в CloudLinux. Со стороны административной части, CloudLinux предоставляет инструменты для управления лимитами, а так же PHP-селектор с различными режимами работы (CGI, FastCGI, LSAPI).

В этот раз к нам обратился клиент со следующей проблемой. Его сайт на движке WordPress периодически начал отдавать 503 ошибку, о чём он нам и сообщил.

Коды ответа, начинающиеся с 50х, относятся к проблемам на стороне сервера. Это могут быть проблемы как самого сайта, так и веб-сервера, который их обслуживает.

Типичные ситуации, при которых мы получаем следующие ошибки:

  • 500 Internal Server Error — довольно часто связана либо с синтаксическими ошибками в коде сайта, либо с отсутствующими библиотеками / не поддерживаемой версией PHP. Так же могут быть проблемы с подключением к базе данных сайта или неверными правами на файлы / каталоги
  • 502 Bad Gateway — например, если Nginx ссылается на неправильный порт веб-сервера Apache или процесс Apache по какой-то причине перестал работать
  • 504 Gateway Timeout — ответ от Apache не был получен в течение заданного в конфигурации веб-сервера времени
  • 508 Resource limit is reached — превышен лимит, выделяемых пользователю ресурсов

В данном списке приведены лишь некоторые, наиболее распространённые случаи. Также стоит отметить, что при превышении лимитов пользователь может получить как 500, так и 503 ошибку.

При выполнении диагностики данных ошибок, первым делом проверяем журналы веб-сервера. Обычно, этого достаточно, чтобы определить виновника и исправить проблему.

Касаемо 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.

В итоге, получили название процесса /opt/alt/python37/bin/python3.7 -sbb /usr/sbin/cagefsctl —rebuild-alt-php-ini

Данный процесс выполнялся в системе с периодичностью раз в минуту.

Делаем трассировку нескольких процессов cagefsctl, чтобы отследить хотя бы один от начала до конца:

Далее изучаем что он делал, например:

Так же были получены идентификаторы процессов, которые были завершены сигналом SIGHUP. Завершённые процессы были процессами PHP, выполняющимися в данный момент.

Полученные данные были переданы в поддержку CloudLinux с целью уточнить легитимность данного процесса и должен ли он работать с такой периодичностью.

Позже получили ответ, что работа команды /usr/sbin/cagefsctl —rebuild-alt-php-ini выполняется корректно, единственный нюанс в том, что команда выполняется слишком часто. Обычно вызывается при системном обновлении или изменении параметров PHP.

Единственная зацепка в данном случае осталась — проверить, кто является родительским процессом 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, проблема была решена. Теперь наш хостинг работает стабильно. А нами был получен опыт, который пригодится нам в будущей работе.

Источник

Adblock
detector