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

26.04.2019

Добрый день!

При заходе на сайт выдается ошибка 504 Gateway Timeout Error . Как ее исправить?

Ответ

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

Существует несколько способов для решения проблемы.

Способ 1. Перезагрузка страницы в веб-браузере

Самое первое, что Вы должны предпринять, — это попробовать через минуту или две перезагрузить страницу в своем браузере. Возможно хостинг в данный момент перегружен, и сайт быстро вернется в работу. Также можно попробовать открыть ту же страницу в каком-либо другом браузере. Кроме того, можно воспользоваться специальным онлайн-сервисом , показывающем недоступность сайта исключительно для вас или для всех пользователей. Если сервис выдал сообщение “site.ru looks down from here ”, то действительно сайт недоступен для всех.

Способ 2. Отключение параметров прокси

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

Способ 3. Проверка службы DNS

Ошибка 504 Gateway Timeout Error также может быть вызвана проблемами с DNS -службой, а именно на сервере, когда, например, домен не преобразован в корректный IP . Часто такое случается, если Вы только что перенесли свой сайт с локального компьютера на хостинг. В таком случае необходимо дождаться распространения DNS -данных по всей Сети (обычно до 48 часов).

Кроме того, проблемы с DNS могут быть и локального характера, т.е. на Вашем компьютере. Для их решения рекомендуется очистить DNS -кэш. Например, для операционный систем Windows для этого используют команду ipconfig /flushdns . В macOS можно применить dscacheutil -flushcache .

Наконец, Вы вправе на какое-то время изменить DNS -сервера Вашего хостинга на публичные (например, 8.8.8.8 или 8.8.4.4 от Google ).

Способ 4. Временное отключение CDN

Очередная причина возникновения ошибки 504 Gateway Timeout Error — проблемы с сетью доставки контента (CDN ). Если Вы используете этот сервис, можно временно его отключить. Часто для его подключения на сайте WordPress используют бесплатный плагин плагин CDN Enabler . Для отключения CDN на своем сайте достаточно будет просто деактивировать его и проверить работу сайта. Если после этого стало невозможным попасть в админ-панель, необходимо соединится с сервером Вашего хостинга (например, через ), перейти в каталог плагинов и переименовать папку cdn-enabler . В итоге Ваше соединение со службами CDN будет временно отключено. Аналогичная ситуация и с плагином WP Rocket или любым другим, взаимодействующим с CDN .

Иногда ошибка 504 может появляться вследствие использования прокси-серверов типа Cloudflare или Sucuri . Например, для первого сервиса существует два типа ошибки 504 .

Вариант 1

В этом случае проблема действительно со службой Cloudflare . Для ее решения нужно обратится в техподдержку сервиса.

Вариант 2

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

Способ 5. Проверка хостинга

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

Способ 6. Проверка и выявление спама, вирусов и DDoS-атак

Еще одна причина возникновения ошибки 504 — это наличие спама, вируса или DDoS -атаки, что может привести к перегрузке и отказу сервера. В таком случае необходимо, во-первых, ознакомится с предоставляемыми компанией-хостингом инструментами для борьбы с вышеперечисленными угрозами. Часто в админ-панели хостинга присутствуют антивирус, а также включение защиты от DDoS -атак. Что касается спам-комментариев на сайте WordPress, то с этим довольно эффективно борются соответствующие плагины (например, самый популярный среди пользователей Akismet Anti-Spam ). Для выявления угроз обычно изучают статистику сервера, статистику поисковых систем на предмет подозрительных IP -адресов.

Способ 7. Проверка активных тем и плагинов

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

Ошибка 504 Gateway Timeout (time out) - одна из самых распространенных. Что же такое - 504 Gateway Timeout (time out)? Как правило, подобного рода ошибка может возникать в том случае, если на сервер, на котором находится какой-то веб-ресурс, посылается огромное количество запросов, и он просто не успевает их обрабатывать, то есть у него не получается в установленный лимит времени вернуть HTTP-ответ. Вследствие этого может даже прерываться соединение, а пользователь так и не получит доступ к веб-ресурсу. Это обусловлено тем, что сервер не успевает обрабатывать старые запросы, которых накопилось уже много, а появляются еще и новые, которые встают в очередь и не успевают обрабатываться.

Как устранить ошибку 504 Gateway Timeout (time out)?

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

Справиться с насущной проблемой может только администратор сервера, который должен увеличить его производительность в несколько раз. Осуществить задуманное можно только если увеличить количество оперативной памяти компьютера, а также сменить процессор на более мощный. Кроме того, потребуется увеличить количество процессов httpd непосредственно в среде Apache. Может случиться и такое, что сайту вообще придется «переехать» на другой хостинг. Такая необходимость возникнет только в том случае, если сайт будет располагаться на обычном виртуальном хостинге, администратор которого либо не будет отвечать на запросы, либо откажется от помощи или если у него не получится решить такую проблему.

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

Итак, на своём сайте мы столкнулись с ошибкой 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

Ошибка 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 (прокси-сервер не получил своевременного ответа от вышестоящего сервера ), но поиск и устранение неисправностей (указанных выше ) продолжается.