В этой статье описаны причины возникновения ошибки 504 Gateway Timeout (time out).
Часто ошибку можно видеть на серверах, где установлен nginx в качестве фронтенда и Apache в качестве бэкенда. И многие думают, что проблема в nginx. Это не так.
504 Gateway Timeout - значит, что клиентский запрос nginx передал апачу, а апач не смог в установленный лимит времени вернуть HTTP-ответ. Немного подробнее о взаимоотношениях nginx’а и апача в статье про 502 Bad Gateway.
Почему Apache не смог ответить?
Скорее всего дело в возросшей нагрузке на сайт, при которой Apache не успевает отдавать HTTP-ответы, и новые запросы встают в очередь. Клиенты «висят» в очереди, но за приемлемое время их так и не успевают обслужить, поэтому соединения сбрасываются.
Чтобы решить проблему, можно добавить ресурсов серверу, в частности оперативной памяти, и увеличить количество процессов httpd (Apache). Другой вариант - оптимизировать работу скриптов сайта, чтобы они выполнялись быстрее. Если вы на обычном виртуальном хостинге, то без усилий администрации ситуация не улучшится. Если проблема не решается, надо искать другого провайдера.
Другая возможная причина возникновения ошибки 504 - исполняемый скрипт не укладывается в отведенный лимит времени. Это бывает, когда скрипт обращается к другим сайтам, либо просто выполняет тяжелую операцию, например, строит поисковый индекс.
Варианты решения: увеличить значение параметра PHP max_execution_time или облегчить скрипт.
Критические замечания к статье приветствуются.
Комментарии
еакселератор может немного помоч
а можно попроще написать? Ну прям ваще подробно. Как и куда нажать, чтоб эту ошибку исправить, а то я блондинка))
Проблема непростая. Если не разбираетесь, то у вас два варианта:
1) На удачу переехать к другому хостеру / на другой сервер / на дорогой тариф. Не факт, что проблема решится, но шансы неплохие.
2) Найти специалиста, который всё осмотрит и скажет, нельзя ли что-то сделать с сайтом, чтобы ошибок не было. Есть вероятность, что специалист в конце концов посоветует вам сменить хостинг.
А специалист просто уберет апач нафиг и оставит один gninx+ fastcgi php.
простите,а что такое хостинг?
>простите,а что такое хостинг?
ыы+)) ну кароче в 1969 году Армстронг на луне установил хостинг(оборудование такое), а потом (побежал искать трансформеров) через определенное время а имено 1990-1993 году в космос стали запускать спутники типа "ХостКоннектор 2000" потом будут еще типа "ГОВНОХОСТКоннектор 5000" и даже "ГОВНОХОСТКоннектор 10000" ну так вот эти спутники сойденяются с оборудованием на луне и передают информацию на Марс а с марса уже на землю потом в интернет (а с интернета все это попадает к нам на компьютер соответственно) кстати в 1969 году Армстронг так и не нашел трансформеров.
ну если интересны подробности то яша+запрос "что такое хостинг?" ответ.
нз +)
Гы-гы-гы :)
прикольно, супер ))))
-
а как быть с тем, что при установленном nginx не работает set_time_limit? Можно ли как нибудь менять время выполнения скрипта не в php.ini а непосредственно в скрипте при установленном nginx ?
А если чужой сайт не мой постоянно выдает мне эту ошибку? А сайтт этот мне нужен. Что делать? Или тут без вариантов?
подскажите, где менять лимит времени? имеется доступ к root, но не знаю в какой файл вносить изменения..
Менять в php.ini .
У меня постоянно такая ошибка 504 возникает - раз в день точно, не знаю уже что и делать(( Переехал к другому хостеру - все равно одно и то же. Помогает только перезагрузка ВПС-сервера. Движок сайта - Datalife Engine (DLE) - может есть какое-то решение для него? Кто-нибудь знает?
Какой-то кривой модуль установлен, вероятнее всего.
граббить сайты перестань +)
У меня тоже аналогичная проблема с nginx. Позволю себе не согласиться с автором статьи. Утверждение что в таком случае всегда виноват Apache мне кажется не всегда верным. Например у меня, возникает эта ошибка довольно часто0, но если в это время зайти напрямую в Apache, то Apache летает. И даже если зайти на страницу статистики nginx, то она тоже тормозит и еле грузиться, хотя тут уж Apache точно не причем. Может кто посоветует, куда копать?
проблема в скриптах и хостерах, а не в серверах, например если юзаеш крон то эт постояные тормоза будут особено если хостер ограничивает на всем
вообще сложно все, но если ошибка поевляется эт говорит о том что нужно уже арендавать сервер.
не забывайте если у вас 10к посещалки и лагает тормозит то тут логичнее удалить нах все и сайт и хостинг и улететь на луну =))) _________ просто идет нагрузка на сервер, либо вас ddos-ят либо вы юзаете крон, либо у вас высокая посещаемость.
а в случае dle (часто там эт косяк) то это скорее и за вашего скрипта граббинга+крон =))
А кто скажет сколько и какие параметры нужно увеличивать в настройках сервера?
504 - значит скрипт слишком долго отвечал или скрипт завершается раньше, чем получен ответ.
Причин может быть много: недостаток ресурсов (чаще всего - оперативной памяти), кривые скрипты, проблемы с базой данных и файловой системой, кривая настройка сервера...
Увеличение количества ресурсов и смена тех.площадки часто в таких случаях являются только отсрочкой проблем (до увеличения посещаемости).
Увеличение времени ожидания nginx при проксировании.
Для работы некоторых скриптов действительно требуется увеличение времени ожидания и выполнения, но таких немного.
Для изменения времени ожидания в конфиг надо добавить следующие параметры (лучше вставлять в контекст location):
proxy_send_timeout 60; # время ожидания при передаче запроса
proxy_read_timeout 60; # время ожидания при чтении ответа
Время указывается в секундах, по-умолчанию 60, т.е. 1 минута.
Но будьте готовы, что не каждый хостер пойдёт на это, т.к. увеличение лимитов = увеличение расхода ресурсов.
Отправить комментарий