Возможные причины возникновения ошибки 503

Ошибка 503 (Service Temporarily Unavailable) – обслуживание временно недоступно.

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

Что же такое хостинг? Хостинг — некоторое количество аккаунтов на одном сервере, в каждом аккаунте может быть не один сайт и основное ограничение на нашем хостинге это ограничение по нагрузке аккаунта пользователя, причем ограничение от одного потока процессора (CPU), а мы используем мощные многопроцессорные сервера. На цифрах для наглядности, на примере нашего сервера с минимальной частотой CPU 2.67GHz (такой сервер у нас один, на других частота выше) это частота одного потока (ядра) процессора, а их 8, а на некоторых и больше, но как написано выше, ограничение для одного аккаунта считается от одного ядра. Теперь возьмем к примеру минимальный тариф – Новичок, где ограничение по нагрузки составляет 10% CPU. Посчитаем, 10% от 2.67GHz получаем 267MHz, причем всего за 1$/месяц. Много это или мало решать вам, но для минимального тарифа этого более чем достаточно. Поэтому для каждого аккаунта на сервере выделяется определенное количество рабочих процессов, которые обрабатывают запросы пользователей ваших сайтов. Эти запросы поступают на сервер в порядке очереди. Если этих запросов несколько, то естественно сервер их обработает и даже не заметит, а если их достаточно много? Представляете что будет? Естественно очередь будет расти, а если процессы еще в добавок и тяжелые, то и очередь будет продвигаться медленней. Сервер не имеет не ограниченных вычислительных мощностей, поэтому ограничения по нагрузке для каждого аккаунта и само собой это не может продолжаться бесконечно, тогда просто рухнет весь сервер, все аккаунты пользователей, все сайты, вот тут то и возникает эта 503 ошибка (Service Temporarily Unavailable), говорящая о том что веб-сервер не может обрабатывать больше запросов и необходимо подождать пока очередь уменьшиться и можно будет дальше обрабатывать запросы Как устроен хостинг рассмотрели. Постараемся описать основные причины, при которых может расти очередь и по возможности пути решений этой проблемы. На самом деле иногда это может быть очень сложной задачей и собственных знаний может не хватить, но тем не менее:

  • Зависание скриптов при передаче больших статичных файлов через PHP

Такие большие файлы лучше всего передавать непосредственно напрямую, не используя скриптов. Почему? Скрипты работают определенное время, а не постоянно и при окончании времени работы скрипта, прерывается передача файла, соответственно файл не будет передан полностью + запрос оставит процесс веб-сервера работать ещё длительное время. Так же, каждая передача файлов через PHP это отдельный рабочий процесс веб-сервера apache, а для передачи статичных файлов напрямую, будет использоваться отдельный многопоточный процесс веб-сервера nginx, который может обрабатывать множество потоков и тем самым не будет влияния передачи файла на загрузку. Хранение и отдачу файлов можно так же реализовать через правила mod_rewrite и файл .htaccess (можно использовать решение антилич) Антилич — это система, которая не позволит скачать ваш файл по ссылке на странице с другого сайта. Часто, если ваш файл популярен, недобросовестные web-мастера могут поставить у себя прямую ссылку на него, не упоминая о вашем сайте. Естественно если тот сайт, на котором подгружается изображение от вашего сайта, посещаемый, то это так же может создавать дополнительную нагрузку.

  • Удаленное соединение с другим сервером (сайтом и т.д.)

Удаленное соединение лучше вообще по возможности избегать, но если оно необходимо, то желательно выставлять маленькие значения таймаутов ожидания ответов от другого сервера, так как удаленный сервер может быть недоступен в определенное время, что может вызывать постоянные запросы на соединение с удаленным серверов. Поэтому в таких случаях еще очень важна хорошая связь с такими удаленными серверами. Так же часто используют вставки отдельных функций, кодов и т.д. (include) и если эти функции располагаются в одном аккаунте, используйте только локальные пути, а не в виде вставки url-адреса (http://site.ru/file.php). Лучше вставить конструкцию например такого вида: include 'file.php'; Это не будет делать дополнительный внешний запрос на сервер и тем самым мы можем снизить нагрузку, уменьшить количество создаваемых процессов.

  • Очень тяжелые или испорченные дополнения систем управления сайтами (при использовании CMS и пр скриптов)

Для нахождения таковых, можно отключать дополнения (плагины, хаки, модули и т.д.) по отдельности. Возможно при включении/отключении заметите что сайт у вас станет быстрее/медленнее загружаться. Дальше уже вам решать, сможете найти более легкую замену или исправить поврежденные дополнения. Так же в дистрибутив многих CMS включены дополнения, которые лично вам могут быть не нужны или в их использовании нет такой большой надобности, поэтому лучше удалить их.

  • Задания выполняющиеся долгое время

Иногда в самих скриптах пишут задания на выполнение чего либо по расписанию (например в тех же mambot’ах в joomla), если их можно перенести в планировщик (cron), то лучше это сделать через cron, так как такие задания в joomla выполняются вместе с запросами пользователей и тем самым замедляя загрузку сайта и увеличивая нагрузку, а то и вовсе может не загружаться сайт.

  • Рассылки почты

Так же может влиять на загрузку сайта, но тем не менее рассылки писем часто бывают необходимы и их так же лучше оптимизировать. Скрипт запуска рассылки можно добавить планировщик (cron), как и в случае с mambot’ами в joomla. Управление планировщиком находится в панели управления хостингом и доступно при соответствующем тарифе. А запускать лучше такие скрипты во время наименьшей нагрузки, например ночное, когда на сайте меньше всего посетителей.

  • Медленные или не оптимизированные запросы sql к базе данных

Пути решения в этом случае – это использование кеширования, оптимизация запросов и индексация таблицы базы данных по столбцам (сортировка, упорядочивание). Так же если все это не помогает то возможно стоит подумать о смене скрипта на более оптимизированный.

  • Большое количество запросов к серверу

Старайтесь избегать лишних и ненужных запросов, запросы могут исходить не только от посетителей ваших сайтов, но и например от индексирующих ботов с поисковиков, sape и т.д, так же увеличивается количество запросов при использовании большого количества url на файлы (изображения, js-скрипты, css-стили) которые загружаются через отдельные запросы (при включенном apache вместо nginx) и при возможности объединяйте их в один файл.
Так же запросы могут исходить например от чата или какого-то участка, блока на сайте, который посылает ajax запросы на сервер, многие из нас любят открывать по нескольку вкладок в браузере, то нужно учитывать что от этого так же может увеличиваться количество запросов и соответственно процессов веб-сервера.
Вставка iframe кодов на сайте, тоже может быть причиной 503.
Еще один пример увеличения запросов это когда другие сайты используют ваши ресурсы (ссылки на файлы, картинки, различные информеры), как с этим бороться уже описано выше, использовать антилич системы
(D)dos-атаки, флуды, спамы в комментарии или в другие веб-формы на сайте, так же могут вызывать большое количество запросов, описывать здесь как они могут осуществляться, не будем, можно поискать в сети.
Если у вас все оптимизировано, используется кеширование, минимум запросов и просто не хватает ресурсов на используемом тарифе, тогда остается только задуматься о повышении и переходе на другие тарифные планы, так как ваши проекты этого требуют.
Но как часто замечено, всем хочется недорогих тарифов, про оптимальное расходование ресурсов многие просто забывают.
На webhost1.ru разработаны оптимальные тарифы нужно только выбирать согласно ваших проектов, либо начиная с малого, подобрать оптимальный для вас тариф, что можно осуществить самостоятельно в биллинге.
Наконец если вашим сайтам не хватает самого высокого тарифа, часто возникает 500 ошибка, вы не знаете как избежать данной проблемы, то возможно стоит задумываться о том, что требуется больших ресурсов и судя по всему, вам нужен как минимум виртуальный либо выделенный сервер.


QR Code
QR Code faq:err503 (generated for current page)