Что означает ошибка 504 gateway time out. Что значит ошибка «504 Gateway Time-out» и как решить проблему

Ошибка 504 Gateway Timeout – это код состояния HTTP , который означает, что один сервер не получил своевременный отклик от другого сервера, к которому он обратился, пытаясь загрузить веб-страницу или выполнить запрос браузера. Она может возникать вместе с 502 Bad Gateway .

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

Как можно увидеть ошибку 504

Отдельным сайтам разрешено настраивать отображение ошибки Gateway Timeout . Вот несколько распространенных способов вывода подобной ошибки:

504 Gateway Timeout HTTP 504 504 ERROR Gateway Timeout (504) HTTP Error 504 - Gateway Timeout Gateway Timeout Error

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

Помните, что ошибка 504 Gateway Timeout и 502 Bad Gateway ngin может появиться в любом браузере, операционной системе и на любом устройстве.

Причины возникновения ошибки 504 Gateway Timeout

В большинстве случаев ошибка 504 Gateway Timeout означает, что любой сервер, который выдает «тайм-аут », «упал » или неправильно работает.

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

Как исправить ошибку 504 Gateway Timeout

  1. Перезагрузите веб-страницу, нажав кнопку обновление / перезагрузка, в F5 или повторив URL-адрес из адресной строки.

Несмотря на то, что 504 Gateway Timeout и ошибка 502 Bad Gateway сообщает о неподконтрольной вам ошибке, проблема может быть временной. Просто перезагрузите страницу — это быстро и легко.

  1. Перезапустите все сетевые устройства. Временные проблемы с модемом, маршрутизатором, коммутаторами или другим сетевым оборудованием могут вызывать ошибку 504 Gateway Timeout . Простой перезапуск этих устройств может помочь.

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

  1. Проверьте настройки прокси-сервера в своем браузере или приложении. Убедитесь, что они верны. Неправильные настройки прокси-сервера могут вызвать 504 ошибку.

Подсказка . Смотрите Proxy.org обновленный, проверенный список прокси-серверов, которые можно использовать.

Примечание . Большинство компьютеров не имеют настроек прокси-сервера, поэтому, если ваши настройки пусты, пропустите этот шаг.

  1. Измените DNS-сервер. Возможно, ошибка 504 Gateway Timeout , которую вы видите, вызвана проблемой с DNS-сервером , который вы используете.

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

Подсказка . Если не все сетевые устройства получают ошибку HTTP 504 или 502 error Bad Gateway , но все они находятся в одной сети, изменение DNS-сервера не сработает. Если это похоже на вашу ситуацию, переходите к следующей идее.

  1. Если изменений не произошло, обратитесь к сайту. Это единственное, что вы можете сделать. Велика вероятность, что администраторы сайта уже работают, чтобы исправить первопричину ошибки 504 Gateway Timeout .

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

Подсказка . Если начинает казаться, что сайт выдает 504 ошибку для всех, поищите в Twitter в режиме реального времени информацию о недоступности сайта. Лучший способ сделать это — найти #websitedown в Twitter . Например, если Facebook может быть недоступен, выполните поиск по тегу #facebookdown .

  1. Обратитесь к своему интернет-провайдеру. Вероятнее всего, что после описанного выше устранения неполадок, выскакивающая 504 Gateway Timeout — это проблема, вызванная неполадками в Сети, за которую отвечает ваш провайдер.
  1. Вернуться позже. На данный момент вы исчерпали все варианты, и ошибка 504 Gateway Timeout устраняется администратором сайта или интернет-провайдером.

Регулярно проверяйте сайт. Без сомнения, он снова начнет работать.

Исправление ошибки 504 на вашем собственном сайте

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

Большие объемы трафика могут привести к тому, что ваш сервер будет выдавать ошибку 504 . Хотя 503 или ошибка 502 Bad Gateway будет более вероятна.

В частности, в WordPress сообщение 504: Gateway Timeout иногда возникает из-за поврежденных баз данных. Установите WP-DBManager и попробуйте применить функцию «Восстановить БД », а затем «Оптимизировать БД ». Посмотрите, поможет ли это.

Убедитесь, что ваш файл HTACCESS правильный. Особенно если вы только что переустановили WordPress .

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

Больше способов увидеть ошибку 504

Ошибка Gateway Timeout при получении в Windows Update генерирует код ошибки 0x80244023 или сообщение WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT .

В программах на базе Windows , которые изначально обращаются к интернету, ошибка 504 может отображаться в небольшом диалоговом окне или окне с ошибкой HTTP_STATUS_GATEWAY_TIMEOUT и/или сообщение The request was timed out waiting for a gateway (истекло время ожидания запроса для шлюза ).

Менее распространенная ошибка 504 — это Gateway Time-out: The proxy server did not receive a timely response from the upstream server (прокси-сервер не получил своевременного ответа от вышестоящего сервера ), но поиск и устранение неисправностей (указанных выше ) продолжается.

Ошибка 504 Gateway Timeout - причины возникновения и способы устранения - 4.6 out of 5 based on 15 votes

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

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

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

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

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

Нехватка ресурсов на сервере из-за большой нагрузки.

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

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

Ошибки, допущенные в скриптах.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этой статье описаны причины возникновения ошибки 504 Gateway Timeout (time out).

Часто ошибку можно видеть на серверах, где установлен nginx в качестве фронтенда и Apache в качестве бэкенда. И многие думают, что проблема в nginx. Это не так.

504 Gateway Timeout - значит, что клиентский запрос nginx передал апачу, а апач не смог в установленный лимит времени вернуть HTTP-ответ. Немного подробнее о взаимоотношениях nginx’а и апача в статье про .

Почему Apache не смог ответить?

Скорее всего дело в возросшей нагрузке на сайт, при которой Apache не успевает отдавать HTTP-ответы, и новые запросы встают в очередь. Клиенты «висят» в очереди, но за приемлемое время их так и не успевают обслужить, поэтому соединения сбрасываются.

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

Другая возможная причина возникновения ошибки 504 - исполняемый скрипт не укладывается в отведенный лимит времени. Это бывает, когда скрипт обращается к другим сайтам, либо просто выполняет тяжелую операцию, например, строит поисковый индекс.

Варианты решения: увеличить значение параметра PHP max_execution_time или облегчить скрипт.

Критические замечания к статье приветствуются.

Комментарии

Гость 23.01.2010 17:49

а можно попроще написать? Ну прям ваще подробно. Как и куда нажать, чтоб эту ошибку исправить, а то я блондинка))

Гость 07.02.2010 19:20

Проблема непростая. Если не разбираетесь, то у вас два варианта:

1) На удачу переехать к другому хостеру / на другой сервер / на дорогой тариф. Не факт, что проблема решится, но шансы неплохие.

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

Гость 29.11.2010 14:23

А специалист просто уберет апач нафиг и оставит один gninx+ fastcgi php.

Мика 25.05.2010 21:54 http://www.mikafan.ru

У меня постоянно такая ошибка 504 возникает - раз в день точно, не знаю уже что и делать((Переехал к другому хостеру - все равно одно и то же. Помогает только перезагрузка ВПС-сервера. Движок сайта - Datalife Engine (DLE) - может есть какое-то решение для него? Кто-нибудь знает?

BoBka_altRUist 24.07.2014 09:38

если у вас VPS значит скорее всего валится из-за того что не хватает оперативной памяти, часто вижу такую проблему на сайтах которые на движках типа DLE, Drupal, Wordpress ...
перейдите на обычный хостинг, и не надо брать VPS с памятью 1/2 Гб

Гость 23.01.2011 14:34 http://gamed.info

У меня тоже аналогичная проблема с nginx. Позволю себе не согласиться с автором статьи. Утверждение что в таком случае всегда виноват Apache мне кажется не всегда верным. Например у меня, возникает эта ошибка довольно часто0, но если в это время зайти напрямую в Apache, то Apache летает. И даже если зайти на страницу статистики nginx, то она тоже тормозит и еле грузиться, хотя тут уж Apache точно не причем. Может кто посоветует, куда копать?

Рома Волков 25.11.2011 04:08

проблема в скриптах и хостерах, а не в серверах, например если юзаеш крон то эт постояные тормоза будут особено если хостер ограничивает на всем

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

не забывайте если у вас 10к посещалки и лагает тормозит то тут логичнее удалить нах все и сайт и хостинг и улететь на луну =))) _________ просто идет нагрузка на сервер, либо вас ddos-ят либо вы юзаете крон, либо у вас высокая посещаемость.

а в случае dle (часто там эт косяк) то это скорее и за вашего скрипта граббинга+крон =))

teerex 20.02.2011 01:06 http://teerex.intome.ru/blog

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

Увеличение времени ожидания nginx при проксировании.
Для работы некоторых скриптов действительно требуется увеличение времени ожидания и выполнения, но таких немного.
Для изменения времени ожидания в конфиг надо добавить следующие параметры (лучше вставлять в контекст location):

proxy_send_timeout 60; # время ожидания при передаче запроса
proxy_read_timeout 60; # время ожидания при чтении ответа

Время указывается в секундах, по-умолчанию 60, т.е. 1 минута.

Но будьте готовы, что не каждый хостер пойдёт на это, т.к. увеличение лимитов = увеличение расхода ресурсов.

Djane 19.03.2011 00:14 http://djane.com.ua

данная ошибка является что ли больше кривыми настройками апач, если очень много обращений?

teerex 24.04.2011 02:44 http://teerex.intome.ru/blog

может быть дело и в настройке апача.
но чаще всего дело в тормозных скриптах/серверах.

32bit 01.04.2011 14:25 http://32bit.pp.ua

а может из за 504-й ошибки выкинуть из индексации поисковиком?

teerex 24.04.2011 02:46 http://teerex.intome.ru/blog

Может.
Если ошибка будет висеть довольно долго (по крайней мере больше часа).
Причём выкидываются конкретные страницы, на которых была ошибка.

Код ошибки 504 Gateway Time-out – довольно специфическая проблема, с которой может столкнуться человек, владеющий собственными виртуальными серверами на просторах интернета. То есть, обычному пользователю данная неприятность не грозит, а вот категории владельцев интернет-серверов следует знать способы исправления ошибки 504 gateway time out.

504 gateway timeout – что это?

Естественно, что любую процедуру лечения рекомендуется начинать с понимания причин возникновения ошибки. Или, как минимум, знания определения каждой неприятности. Если сделать перевод на русский «504 gateway time out», то получиться сообщение, в котором говорится о шлюзе, к которому истекло время, отведенное для подключения.

То есть, выглядит это примерно так:

  • Какой-то пользователь пытается совершить вход на интересный ему ресурс.
  • Начинается процесс подключения к серверу.
  • Процедура не успевает закончится в отведенное для нее время.

В итоге, возникает код ошибки 504 Gateway Time-out.

Естественно, что посетители, видящие, что доступ на нужный им сайт невозможен, могут просто пойти на конкурирующие, рабочие ресурсы. То есть, владелец проблемного сервера может потерять посетителей, трафик и свой доход. Следовательно, очень важно владеть информацией о том, как решить проблему 504 gateway time out.

Как исправить 504 gateway time out nginx и ее аналоги

Существует три способа, которые могут помочь решить данную проблему.

  1. Аппаратный.

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

  1. Программный.

Этот вариант подразумевает при возникновении 504 gateway timeout облегчить используемые скрипты, которые, кроме своих положительных качеств имеют и отрицательные. Например, увеличивают время подключения к удаленному серверу.

  1. Оптимизирование.

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

Ошибка 504 gateway time out для владельцев сайтов

Конечно, с данной ситуацией могут столкнуться не только владельцы серверов, но и те люди, которые держат на них свои сайты. Что делать в этом случае? Прежде всего, обратиться в службу поддержки, которая должна оперативно исправить ситуацию. Если этого не произошло или код ошибки 504 Gateway Time-out возникает с пугающей периодичностью, то выход из положения только один – переход на другого хостинг-провайдера, способного оградить владельца сайта от возникновения такой неприятности.

Итак, на своём сайте мы столкнулись с ошибкой 504 Gateway Time-out и не знаем, что же делать. В этом посте постараюсь описать полный алгоритм действий для решения этой проблемы, а так же поведать о причинах её возникновения. Следуйте под кат!

Так вот, продолжим. Для начала выясним, что это за HTTP код ошибки такой, а точнее, что же он означает? 504 - пятьсот четвёртая ошибка, она же Gateway Timeout, а точнее, на русском это звучит примерно так: «Время прохождения через шлюз истекло». Код означающий, что сервер при работе в качестве внешнего шлюза или прокси-сервера не получил своевременно отклик от вышестоящего бэкенда сервера, к которому он обратился, пытаясь исполнить запрос.

По этой ошибке легко можно представить внутреннюю организацию вашего web сервера. Это явно связка двух web серверов в которой один выступает в роли фронтенда (переднего сервера) и второй в качестве бэкенда (заднего сервера). И скорее всего, так бывает в 99% случаев, установлен веб сервер nginx, который выступает в качестве фронтенда и так же стоит сервер Apache в качестве бэкенда. Nginx берёт на себя роль распределяющего proxy сервера и отдаёт статику (картинки, файлы), а apache вместе с PHP обрабатывает динамику, там же и MySQL неподалёку. И ошибку 504 Gateway Time-out вы получаете именно от nginx.

В общем вернёмся к делу. Ситуация предельно ясна! За отведённое время сервер nginx просто не дожидается обратного ответа от apache и сообщает об этом вам. Т.е. прослеживаются явные перегрузки на «внутренней» стороне бэкенда. Другой вопрос в том, что именно порождает эти перегрузки от чего apache не успевает во время ответить? Это уже вопрос другой. Тут так просто не разобраться, надо смотреть логи сервера. Ну понятное дело, что кто то перегружен. Либо скрипт долго работает, либо СУБД не успевает обработать множество запросов, что кстати бывает чаще всего ведь коннектор с СУБД это самое слабое место. В общем ваш внутренний сервер не успевает в срок выполнить скрипт, точнее он просто долго выполняет, а nginx не хочет ждать и спешит отдать вам 504 ошибку. От чего не укладывается по времени apache так же ясно, либо много запросов извне и ресурсов сервера не хватает (это можно узнать из счётчика посещаемости сайта), либо выполняемый скрипт очень тяжёлый.

В общем речь сейчас не об этом, а том как справится с ошибкой 504. Многих веб мастеров вполне устраивает, то что страница генерируется по несколько минут, может быть оно того стоит.

В общем, ближе к делу, наша задача сказать серверу nginx, что бы он ждал ответа от apache подольше и не торопился отдавать клиенту ошибку 504. С этим всё просто! Естественно нужно иметь root доступ к своему серверу, о виртуальных хостингах и даже говорить не буду. В общем заходим на своей сервер, хоть даже по протоколу ssh в терминал и идём в папку с конфигурационными файлами сервера nginx. Сразу скажу, что они меняются от версии к версии и поэтому точно сказать какой именно файл будет не могу. Плюс ко всему всё ещё зависит от того в каком режиме работает nginx и кто его вам настраивал. Грубо говоря нам нужен текущий файл настроек сервера nginx. Возможно это даже будет nginx.conf, как в общем то и должно быть.

Заходим в условный файл настроек виртуальных хостов сервера nginx, расположенному по адресу: /etc/nginx/nginx.conf

Здесь можем либо поискать уже установленные директивы (если есть) или дописать вручную. Можно дописать естественно как для всех хостов, так и для каждого конкретного, не важно. В общем пишем следующее:

Proxy_send_timeout 60; # время ожидания при передаче запроса proxy_read_timeout 60; # время ожидания при чтении ответа

Эти директивы нужны для изменения времени ожидания. Лучше вставлять в контекст location. У меня получилось примерно следующим образом:

Server { listen xxx.xxx.xxx.xxx:80; # ip адрес сервера и прослушиваемый порт server_name someserver.loc; # имя сервера rewrite ^(/manager/.*)$ https://$host$1 permanent; error_page 404 = @fallback; # Далее две строки, которые надо добавить proxy_send_timeout 600; # время ожидания при передаче запроса proxy_read_timeout 600; # время ожидания при чтении ответа location / { proxy_pass http://xxx.xxx.xxx.xxx:8080; # протокол и адрес проксируемого сервера, а также необязательный URI, на который должен отображаться location proxy_redirect http://sitename.loc:8080/ /; # текст, который нужно изменить в полях заголовка “Location” и “Refresh” в ответе проксируемого сервера proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } }

Далее сохраняем файл конфигурации и перезапускаем сервер nginx. Теперь он будет ждать ответа от apache именно столько времени, сколько вы указали в добавленных директивах, а не по значению по умолчанию. Думаю понятно, что время вы сами выставляете какое хотите. Всё, теперь ошибка 504 Gateway Time-out вас беспокоить не будет. Понятное дело, что это лишь вершина айсберга и нужно будет разбираться с самой причиной долгой генерации страницы, но это уже другая тема. Возможно придётся так же поставить таймаут побольше и для PHP, а то может быть такое, что и он начнёт ругаться, мол ему дают мало времени на обработку. Для этого используем PHP директивы max_input_time и max_execution_time в файле настроек PHP - php.ini или в файле локальных настроек сервера Apache - .htaccess




Top