Ошибка 503 Apache и как ее исправить


При обращении к сайту можно видеть 503 Service Temporarily Unavailable.  Чтобы понять как исправить ошибку 503 прежде всего нужно выяснить причины проверив логи доступа и логи ошибок веб-сервера



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

Рассмотрим основную причину и то, как ее устранить (для конфигурации с Apache модулем fastcgi).



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

less /var/log/apache2/error.log

[Mon Mar 05 11:13:25 2018] [warn] [client 40.77.387.85] mod_fcgid: can't apply process slot for /usr/lib/cgi-bin/php
[Mon Mar 05 11:14:19 2018] [warn] [client 81.193.147.12] mod_fcgid: can't apply process slot for /usr/lib/cgi-bin/php, referer: https://yandex.ru/search/?text=%C2%AB%D80%D0%B0%D0%BB-%D0%9D%D0%B5%D1%84%D1jdfgfdA1%D0%B5%D1%80%D0%B2fdhfdh&clid=2270457&banerid=0500000134:58e754588abffa001432481c&win=215



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



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



Перезапуск процессов часто является временным решением проблемы.

Перезапуск выполняется системным вызовом SIGTERM. Если процесс занят (выполнением долгого скрипта), он не отреагирует на этот сигнал и продолжит работу. Веб-сервер в этом случае пошлет процессу сигнал SIGKILL и завершит его принудительно.

Подробнее про процессы и системные вызовы.



Как исправить ошибку 503 Apache при записях can't apply process slot в логах


В случае если в логах присутствуют сообщения с can't apply process slot на ситуацию можно повлиять отредактировав параметры модуля fastcgi Apache увеличив лимиты на количество процессов и количество запросов на процесс

mcedit /etc/apache2/mods-availible/fcgid.conf



Увеличивать нужно один из двух параметров (или оба из них) постепенно подбирая оптимальные значения

FcgidMaxProcessesPerClass

FcgidMaxRequestsPerProcess



После корректировки нужно перезапустить веб-сервер

/etc/init.d/apache2 restart


После перезапуска нужно убедиться в том что веб-сервер стартовал:

исправить ошибку 503



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



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



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

Анализ общего состояния сервера можно начинать с данных, которые дает утилита top.

Сказать спасибо