Что значит ошибка 504 gateway time-out

Борьба с ошибкой 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, как в общем-то и должно быть.

Далее будут показывать на своём примере, думаю применить к себе будет не сложно, ОС Linux Ubunut.

Заходим в условный файл настроек виртуальных хостов сервера 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

Читайте также:  Как определить судебный участок

Дополню тем, что если вы используете сервер Apache в качестве переднего сервера (фронтенда) и получаете ошибку 504 Gateway Time-out именно от него, тогда можно попробовать поменять опцию Timeout, находится в файле конфигураций веб сервера, чаще всего это либо httpd.conf или httpd-default.conf. Находим следующие строки:

# # Timeout: The number of seconds before receives and sends time out. # Timeout 60

Вместо 60 пишем своё новое значение, рекомендую не мелочиться и сразу поставить на 600 секунд (Timeout 60), т.е. 10 минут.

На этом пожалуй всё, думаю проблема 504 Gateway Time-out теперь для вас решена.

Источник: http://softodom.com/604/borba-s-oshibkojj-504-gateway-time-out.html

Как исправить 504 gateway time out Nginx

Как исправить 504 gateway time out Nginx

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

Именно в таком режиме может наблюдаться ошибка 504 gateway time out Nginx. В нашей сегодняшней статье мы попытаемся разобраться почему она возникает и как с ней бороться. Разберем несколько способов решения и причин.

Что значит 504 gateway time out Nginx?

Как я уже сказал, такая ошибка возникает, когда сервер Nginx работает в режиме прокси. Например, при использовании php-fpm или Apache. Дословно, она означает, что превышено время ожидания ответа от сервера. В нашем случае, превышено время ожидания ответа от php-fpm. Рассмотрим несколько причин такого поведения:

  • Скрипт PHP или на другом языке полностью завис и уже не вернет никакого ответа;
  • Скрипт работает очень долго, но в Nginx настроен интервал на сброс соединения если целевой сервер не ответил на запрос за отведенный строк;
  • Сервер перегружен и не успевает обслужить всех клиентов, вернуть ответы на все запросы Nginx;

Дальше рассмотрим что можно сделать если вы встретились с ошибкой 504 gateway time out Nginx.

Как исправить 504 gateway time out Nginx?

Самый первый вариант — это если вашему серверу, php-fpm или apache не хватает ресурсов системы, например, памяти или процессора. Вы можете посмотреть свободную память с помощью команды free:

free -h

Нагрузку на процессор можно узнать командой htop:

htop

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

Второй вариант — это если так и было запланировано, чтобы скрипт работал долго. В таком случае нужно настроить Nginx, чтобы он дождался ответа от Apache или php-fpm. Для решения проблемы в случае с php-fpm нужно только добавить две строчки в блок настройки fastgci:

fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

Здесь 300 означает 300 секунд, для большинства скриптов, этого будет вполне достаточно, но вы можете еще больше увеличить значение если это нужно. Также ошибка 504 может возникать, когда Nginx используется в качестве прокси для Apache или любого другого веб-сервера, тогда нужно еще настроить время ожидания для прокси. Добавьте эти строки в секцию server:

proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600;

send_timeout 600;

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

sudo systemctl restart nginx

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

fgrep -i » 504 » /var/log/nginx/access.log

Более подробную информацию иногда можно увидеть в error.log:

fgrep -i » 504 » /var/log/nginx/error.log

Читайте также:  Сколько поз в камасутре

Дальше, если проблема именно в php-fpm, вы можете отследить какие скрипты выполняются медленно с помощью встроенной функции slow-log. Для ее активации добавьте следующие строки в конфигурацию вашего пула:

sudo vi /etc/php-fpm.d/www.conf

slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s

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

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

Выводы

В этой статье мы рассмотрели как исправить 504 gateway time out Nginx 1.2 7, а также почему может возникнуть эта ошибка. Надеюсь, эта информация была полезной для вас.

Источник: https://losst.ru/kak-ispravit-504-gateway-time-out-nginx

Ошибка 504 Gateway Timeout (time out) nginx. Как исправить. Хостинг в деталях

В этой статье описаны причины возникновения ошибки 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 или облегчить скрипт.

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

Источник: http://hosting101.ru/504-gateway-timeout.html

Ошибка 504 Gateway Time-out (nginx), как правильно исправить

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

Но этот запрос не сразу попадает на Apache, а сначала он приходит на nginx-сервер (своего рода распределитель запросов), а тот уже посылает его на Apache.

Так вот, ошибка 504 Gateway Time-out обычно происходит из-за того, что сервер nginx передал запрос на Apache, но в течение определенного времени не получил от него ответ.

Почему это происходит?

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

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

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

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

Неправильная работа сайта

В этом случае нужно оптимизировать сайт, причем таким образом, чтобы работа скриптов укладывалась в отведенное время. Если для оптимизации нет возможности, то может помочь изменение параметра, который отвечает за максимальное время ожидания работы скрипта. Для этого в файле .htaccess нужно написать:

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

Не нашли ответ на свой вопрос?Задайте его экспертам! Ответ приходит очень быстро и прямо на ваш email.

Источник: https://ru.hostings.info/schools/504-gateway-time-out-nginx.html

504 Gateway Time-out что значит

504 Gateway Time-out что значит

При переходе на интернет страницу пользователь может столкнуться с невозможностью получения доступа к содержимому указанного сайта, и соответствующим сообщением «504 Gateway Time-out».

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

Читайте также:  Свечи "тержинан": можно ли применять их при месячных

В данном материале я расскажу, что значит 504 Gateway Time-out, каковы причины данной проблемы, и как исправить ошибку на вашем ПК.

Ошибка 504 в окне браузера

Что такое 504 Gateway Time-out и каковы её причины

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

То есть, проще говоря, базовый сервер не получил вовремя ответ от другого, нужного ему, сервера. Похожей ошибкой является 400 Bad request, что значит эта проблема я описал в статье ранее.

Отсутствие своевременного ответа от нужного сервера становится причиной возникновения ошибки 504

Причины ошибки 504 Gateway Time-out могут быть следующими:

  • Вебмастер некорректно настроил проблемный сервер;
  • На проблемном сервере наблюдаются какие-либо технические проблемы;
  • На проблемном сервере некорректно работают различные скрипты;
  • Имеются проблемы с сетевым подключением у самого пользователя (нестабильно работают роутер или модем, сбились настройки DNS и так далее);
  • На требуемый сервер оказывается большая нагрузка пользовательских запросов, и сервер не успевает их обрабатывать.Изучаем ошибки 504

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

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

  • Перегрузите проблемную страницу (обычно с помощью нажатия на F5), или вновь введите требуемый адрес в адресную строку вашего браузера, и нажмите ввод;
  • Просто подождите. Ошибка может иметь временный характер, связанный с техническими работами на сервере и иными релевантными причинами. Обычно через некоторое время работа сервера нормализуется, и пользователь получает доступ к требуемому ресурсу;
  • Перезапустите ваш роутер (модем). В небольшом количестве случаев сбои в работе указанных устройств могут вызывать проблемы с интернет-соединением, и появление ошибки 504;Перезагрузите ваш роутер с помощью нажатия на кнопку включения-выключения
  • Если вы используете прокси для работы в сети, проверьте настройки прокси, и убедитесь, что всё работает стабильно и без сбоев;
  • Попробуйте сменить настройки ваших DNS серверов. Для этого нажмите на кнопку «Пуск», в строке поиска введите ncpa.cpl и нажмите ввод. В открывшемся списке сетевых подключений найдите ваше интернет-подключение, наведите на него курсор, нажмите правую клавишу мыши и выберите «Свойства». В списке компонентов найдите протокол версии 4, и дважды кликните на нём. В открывшемся окне выберите опцию «Использовать следующие адреса ДНС-серверов», и укажите какие-либо публичные адреса, например от:

Источник: http://it-doc.info/504-gateway-time-out-chto-znachit/

Как исправить ошибку 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

Источник: https://wpschool.ru/gateway-timeout-error/

Ссылка на основную публикацию
Adblock
detector