Поиск по сайту

Разделы

Вход в систему

Зарегистрироваться
Логин

Пароль

Забыли пароль?


Новое на сайте


PO4EMU.RU » Техника » ПОЧЕМУ возникает ошибка 504 Gateway Timeout?



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

 

Что обозначает ошибка 504


Ошибка 504 Gateway Timeout означает истечение времени прохождения через шлюз. Пользователь может увидеть данный код ошибки в том случае, если сервер, работая в качестве прокси-сервера или шлюза, обратился к серверу, стоящему выше по иерархии, с запросом, но не получил вовремя ответ.

 

Сервера, у которых Apache установлен в качестве бэкенда, а nginx – фронтэнда, чаще всего генерируют данный код ошибки. Работа пользователя с сервером происходит по следующему плану: клиент отправляет запрос на сервер, который попадает не на прямую на Apache, а пересылается через nginx (это что-то вроде распределителя запросов).

 

Если последний не смог получить ответ от Apache, за установленный промежуток времени, он отправляет клиенту вместо требуемого ему результата сообщение об ошибке сервера 504 (Gateway Timeout).

 

Причины появления ошибки


Нехватка ресурсов на сервере из-за большой нагрузки. Сервер Apache имеет одну не очень приятную особенность – при большой нагрузке и нехватке ресурсов, он не успевает обрабатывать большое количество запросов и вовремя отдавать на них http-ответы.

 

Таким образом, клиентские запросы выстраиваются в очередь, и когда лимит времени на получение ответа заканчивается, они сбрасываются ни с чем. Как следствие, пользователь видит на странице браузера код ошибки 504 (Gateway Timeout). Следует учесть, что не всегда высокая нагрузка обусловлена большим числом посетителей, однако такое встречается не редко.

 

Ошибки, допущенные в скриптах. Еще одной причиной появления данной ошибки являются ошибки в исполняемых скриптах. Как правило на исполнение скрипта отводится определенное количество времени, но в некоторых случаях ему этого времени не хватает. Часто это бывает когда скрипт обращается к стороннему серверу и не всегда успевает отправить запрос и получить ответ в отведенный лимит времени и как следствие выдает ошибку.

 

Можно выделить следующие причины задержки исполнения скрипта:

 

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

 

  1. Скрипт пытается получить на сервере данные, которые не доступны на данный момент (примером может быть работа разнообразных виджетов погоды, курсов валют и т. д.)

 

  1. Скрипт пытается установить соединение через прокси-сервер, который на данный момент недоступен и не может обработать запрос.

 

ПОЧЕМУ возникает ошибка 504 Gateway Timeout

Способы устранения ошибки 504


Рассмотрим несколько распространенных случаев и попытаемся понять как исправить ошибку 504.

 

Если шибка возникает из-за нагрузки на сервер, то в первую очередь необходимо предпринять следующие шаги:

 

  1. Провести оптимизацию сервера.

 

  1. Провести оптимизацию скриптов.

 

  1. Увеличить доступные для сервера ресурсы (количество процессов httpd (Apache), оперативную память и т. п.)

 

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

 

Если есть подозрение на работу скриптов:

 

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

 

Стоит проверить, за какой период времени выполняются скрипты и укладываются ли они в отведенный лимит. Если необходимо, то в конфигурационном файле php.ini нужно увеличить значение php_max_execution_time. Этот параметр определяет время исполнения скрипта, обычно это 30 секунд, при необходимости можно установить 60.

 

Если хостинг не предоставляет возможности редактировать php.ini, можно попробовать прописать в файле htaccess следующую команду:

 

php_value max_execution_time N

N - в данном случае означает ожидание в секундах.

Но делать это через файл htaccess позволяют не все хостеры.

 

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

 

http://webmastermix.ru