Серверные ошибки


Ошибка 403 — 403 Access denied (Доступ к ресурсу запрещен)


Ошибка 403 означает, что доступ к ресурсу, папке или файлу запрещен (получен код 403 Forbidden). Возможно, что доступ был закрыт через файл .htaccess.

Так же ошибка может быть вызвана тем, что в папке нет index файла.


Ошибка 404 — 404 File not found


Документ по указанному URL не существует. Возможно, такой файл удален, либо вы ошиблись при наборе URL в браузере или пошли по неверной ссылке.

Ошибка 500 — 500 Internal server error


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

Также, если файл сохранён в кодировке UTF-8, он должен быть без метки BOM. Если же файл сохранён в UTF-8 с меткой BOM, откройте файл и сохраните его без метки BOM.

Как убрать UTF-8 BOM метку
Чтобы убрать BOM, например в Notepad++, нужно открыть в нём проблемный файл, кликнуть по пункту «Кодировки» в верхнем меню и выбрать «Преобразовать в UTF-8 (без BOM)». Далее сохраните файл и загрузите его на сервер (хостинг).

Ошибка 500 у CGI скриптов, может быть вызвана из-за неправильных прав у файла-скрипта CGI (должны быть 755).

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


Ошибка 502 — 502 Bad Gataway


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

Одна из наиболее частых причин ошибки 502:
скрипт сайта отправляет cookie или другие данные множество раз при каких-то определённых действиях, в результате чего объём заголовков (header) растёт больше допустимого лимита веб-сервера.

При достижении порогового значения, веб-сервер отклоняет запрос с слишком большим заголовком, отбрасывая соединение с ошибкой 502 Bad Gateway. Такое бывает, когда скрипты написаны разработчиками без должной оптимизации.

На хостинге используется связка веб-серверов nginx (front-end) + apache (back-end)
У nginx указаны оптимальные параметры для заголовков:

proxy_buffer_size 32k;
proxy_buffers 16 32k; 

Прочие причины:
иногда пользователи невнимательны в выборе опций, и не читают их описание.
В хостинг-панели зайдите в раздел ДоменыНастройки, если там включены все опции прдряд (стоят галочки), то отключите их. Это может убрать ошибку 502.

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


Ошибка 503 — 503 Service temporarily unavailable


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

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

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

Что же такое хостинг? Хостинг — некоторое количество аккаунтов на одном сервере, в каждом аккаунте может быть не один сайт и основное ограничение на нашем хостинге — это ограничение по нагрузке аккаунта пользователя, причем ограничение от одного потока процессора (CPU), а мы используем мощные многопроцессорные сервера.

Приведем пример на основе нашего сервера с минимальной частотой CPU 3.2GHz — это частота одного потока (ядра) процессора, а их 8 (на некоторых — больше), но как написано выше, ограничение для одного аккаунта считается от одного ядра. Теперь возьмем минимальный тариф SSD1, где ограничение по нагрузки составляет 20% CPU. 20% от 3.2GHz это640MHz, причем всего за 100 рублей/месяц. Много это или мало — решать вам, но для минимального тарифа этого более чем достаточно. Поэтому для каждого аккаунта на сервере выделяется определенное количество рабочих процессов, которые обрабатывают запросы пользователей ваших сайтов. Эти запросы поступают на сервер в порядке очереди. Если этих запросов несколько, то сервер их легко обработает, но если их достаточно много — очередь будет расти, а если процессы еще в добавок и тяжелые, то очередь будет продвигаться медленнее.

Сервер ограничен в вычислительных мощностях, поэтому есть ограничения по нагрузке для каждого аккаунта. Если серьезная нагрузка длится слишком долго — может «рухнуть» весь сервер, все аккаунты пользователей и все сайты — вот тут и возникает ошибика 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. Еще один пример увеличения запросов — использование другими сайтами ваших ресурсов (ссылки на файлы, картинки, различные информеры). Используйте антилич системы в борьбе с этим.

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

Если у вас все оптимизировано, используется кеширование, минимум запросов и просто не хватает ресурсов на используемом тарифе, тогда остается задуматься о переходе на другие тарифные планы.

Конечно, все хотят недорогие тарифы, при этом про оптимальное расходование ресурсов многие просто забывают. На WebHOST1 разработаны оптимальные тарифы и нужно просто подобрать необходимый для вас тариф, что можно осуществить самостоятельно в биллинге.

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


Ошибка 504 — 504 Gateway time-out

____ Этот код ответа означает, что клиент не передал полный запрос в течение некоторого установленного промежутка времени (который обычно задается в конфигурации сервера) и сервер разрывает сетевое соединение. Причиной может быть долгая работа процесса, запущенного скриптом сайта, а также загруженность сервера.

Можно попробовать увеличить выделенное время, прописав в корне сайта в файл .htaccess код:

# время выполнения скрипта - сценария
php_value max_execution_time 60
# время загрузки данных 
php_value max_input_time 60