8 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ошибка 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:

Нагрузку на процессор можно узнать командой 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, а также почему может возникнуть эта ошибка. Надеюсь, эта информация была полезной для вас.

504 gateway time out

Ошибка 504 (Gateway Time Out) это http код, который означает, что сайт или приложение, к которому вы обращаетесь, не успел обработать данные в отведённое ему время. Обычно это время (timeout) устанавливается сервером. В данной статье я расскажу как можно исправить ошибку 504 Gateway Timeout или, по крайней мере, избежать её. Чтобы понять суть этой ошибки, представьте следующую ситуацию: вы хотите узнать штрафы для своего автомобиля.

Вы вводите его данные и нажав кнопку «проверить» говорите серверу — «проверь пожалуйста мой автомобиль на нарушения». «Ок», говорит сервер и отправляет запрос в базу данных, предоставляющую информацию о штрафах и нарушениях. Но на данный момент база перегружена, а сервер всё ждет ответ… И не дожидается, так как срабатывает 504 Gateway Time Out. Иными словами, сервер бы и рад подождать несколько дней, но ему для получения ответа выделили всего несколько секунд.

Примерно так выглядит ошибка 504. Ещё вариант — вы загружаете большое фото, которое сервер неспособен обработать быстро. Результат — 504 Gateway Time Out. По большому счёту, вы никак не можете исправить ошибку самостоятельно, если вы не владеете сервером. Однако, вы в силах предотвратить её появление, изменив свои действия. Например, если вы понимаете, что ошибка возникает при загрузке большой фотографии, попробуйте изменить её размер.

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

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

Обычно ошибка 504 означает ошибку на стороне сервера, однако что делать, если вы единственный, у кого она происходит? Или что делать, если она выходит на всех сайтах? Разберём несколько вариантов решения проблемы с ошибкой 504:

  • Обновите страницу. Причём сделайте это не клавишей F5, а выделив адрес в адресной строке и нажав Enter. Это предотвратит повторную передачу данных и соответственно их обработку;
  • Попробуйте использовать другой браузер. Некоторые данные, хранящиеся в нём, могут вызывать ошибку на стороне сервера. Если это так, чтобы продолжить использовать свой браузер, нужно очистить куки и удалить кэш;
  • Попробуйте очистить кэш DNS;
  • Если это не помогло, сделайте сброс сетевых настроек;
  • Попробуйте другое устройство и другого провайдера; Самый просто вариант не выходя из дома подключиться через к интернету через режим модема на телефоне;
Читать еще:  Как узнать, какие сведения о своих пользователях хранит социальная сеть ВКонтакте

Если на вашем сайте ошибка 504

Так как на данный момент лидирующим является WordPress, мы будем рассматривать решение проблемы с ошибкой 504 именно на этой CMS.

  • Если вы владелец сайта, на котором происходит ошибка 504, обратите внимание на логи. Если они включены, в них будет описана причина ошибки 504;
  • В wp-config включите отладку (показ сообщений ошибок)

Теперь все возникающие ошибки будут отображаться в wp-contents/debug.log

  • Удостоверьтесь, что ошибка не в плагинах. Для этого переименуйте папку с плагинами (wp-content/plugins), например, на «_plugins» и проверьте работоспособность сайта.
  • Если с отключенными плагинами всё в порядке, верните название папки и внутри папки с плагинами начните переименовывать один плагин за другим, пока ошибка не исчезнет.
  • Если вы используете CloudFlare, убедитесь, что не сработала одна из защит от атак. Самым простым вариантом будет связаться с техподдержкой или вовсе отключить его.

Как исправить ошибку 504 если у вас VPS

Если у вас VPS, к которому вы имеете полный доступ, можно попробовать увеличить значение timeout.

Apache

Отредактируйте файл httpd.conf, изменив значение параметра timeout:

Возможные местоположения файла: /etc/apache/httpd.conf, /etc/apache2/apache2.conf , /etc/httpd/conf/httpd.conf , /usr/local/etc/apache22/httpd.conf , /usr/local/etc/apache/httpd.conf

Кстати в OS X файл httpd.conf находится здесь: /Applications/XAMPP/xamppfiles/apache2/conf/httpd.conf

Nginx

Если у вас Nginx, то попробуйте изменить параметры в файле /etc/nginx/conf.d/timeout.conf:

Также увеличьте значение max_execution_time в файле php.ini

Однако, необходимо понять, что этот путь решения проблемы не совсем верен. Если время выполнения скрипта превышает допустимые значения, обратите внимание на уменьшение этого времени. Таким образом, ваши посетители и сервер скажут вам спасибо. Если по каким-то причинам это невозможно, задумайтесь об увеличении ресурсов сервера или кешировании (W3 Total Cache или другие плагины).

504 (Gateway Time Out) на хостинге

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

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

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

С уважением, редакция FixErro.com

Задайте вопрос

или поделитесь своим способом решения проблемы

Ошибка 504 Gateway Time-out и её как исправить в WordPress

Вступление

Ошибка 504 gateway timeout – это один из кодов состояния HTTP, который сервер может вернуть, если он не смог завершить обработку запроса. Хотя эта ошибка и реже встречается, чем 500 internal server или 502 bad gateway, каждый сталкивался с ней, по крайней мере, пару раз, просматривая интернет. Это руководство посвящено тому, что собой представляет ошибка 504 и как её исправить.

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

Что такое ошибка 504 Gateway Timeout?

Коды состояния HTTP, начинающиеся с цифры 5, являются ошибками на стороне сервера. Они появляются, когда невозможно выполнить запрос из-за нарушения связи между несколькими серверами.

Ошибка 504 gateway timeout – это код состояния HTTP, который появляется, когда один сервер не получает своевременный ответ от другого сервера, который действует как шлюз или прокси. Проще говоря, это означает, что сервер не смог выполнить ваш запрос в течение заданного периода времени.

Ошибка 504 gateway timeout также может иметь и другие формулировки, например:

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

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

1. Обновите страницу

Первый шаг в решении ошибки 504 gateway timeout самый простой. Подождите несколько минут и обновите страницу. Может быть, что сервер в какой-то момент получил больше запросов, чем обычно и не смог обработать их.

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

2. Попробуйте другой браузер

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

3. Очистите кэш DNS

Ошибка 504 gateway timeout иногда может быть результатом некорректного устаревшего кэша DNS, но его не сложно очистить. Способ очистки зависит от вашей операционной системы. Вот руководство как очистить кэш DNS в ОС Windows, Linux и Mac OS.

Временно переключите DNS сервера на Google Public DNS, это поможет определить возник ли код состояния HTTP по причине DNS проблемы. Однако мы рекомендуем этот вариант для более опытных пользователей.

4. Проверьте на разных устройствах

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

5. Посмотрите журнал ошибок

Ошибка 504 gateway timeout может также быть вызвана недавними изменениями или обновлениями на сайте. Самый быстрый путь обнаружения – проверка журнала ошибок (англ.) для поиска подсказок. Пользователи WordPress могут включить журналирование ошибок добавлением таких строк в файл wp-config.php:

Теперь все возникающие варианты ошибок будут появляться в файле wp-contents/debug.log.

6. Проверьте плагины

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

Для отключения всех плагинов WordPress перейдите в каталог wp-content, дайте каталогу plugins другое имя.

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

7. Проверьте CDN

Если вы используете CDN для более быстрого получения контента, то обязательно проверьте всё ли в порядке с этой стороны. Самый распространённый случай – это CloudFlare, который работает как CDN и как сервис предотвращения негативных последствий от DDoS. При его использовании вы можете столкнуться в двумя видами ошибок 504 gateway timeout.

Читать еще:  Как установить Скайп

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

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

8. Измените настройки сервера

Если вы используете VPS хостинг, то есть ещё несколько дополнительных моментов, которые вы можете попробовать для исправления ошибки 504 gateway timeout. Они будут заключаться в изменении настроек сервера и увеличении лимитов некоторых ресурсов.

Apache

Пользователи Apache могут увеличить значение timeout по умолчанию в файле httpd.conf. Например:

Также увеличение лимита max_execution_time в php.ini может позитивно сказаться:

Сохраните изменения и перезапустите apache, после чего проверьте. Ошибка 504 gateway timeout должна уйти, если её причиной были недостаточное значение таймаута запроса.

Nginx

Если ваш VPS использует Nginx, попробуйте увеличить такие параметры в файле /etc/nginx/conf.d/timeout.conf:

Также рекомендуется увеличить max_execution_time в php.ini:

После сохранения изменений перезапустить Nginx и попробуйте ещё раз открыть свой сайт.

9. Свяжитесь со службой поддержки

В случае настойчивой ошибки 504 gateway timeout после прохождения всех шагов выше, рекомендуется обратиться в службу поддержки вашего хостинга. Постарайтесь описать, какие шаги вы проделали для выявления причины ошибки и её устранения и предоставьте как можно больше информации, это значительно ускорит процесс.

Выводы

В этом руководстве мы рассмотрели общие шаги для решения проблемы, связанной с ошибкой 504 gateway timeout. Если у вас есть свои хитрости, подсказки или дополнительные решения для устранения этого кода состояния HTTP, дайте нам знать в комментариях!

Автор

Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.

504 Gateway Time-out (nginx)

Что такое ошибка 504 Gateway Time-out (nginx)?

Ваш сайт находится на сервере (чаще всего Apache), когда вы хотите просмотреть сайт, то через браузер посылается запрос к серверу. Но этот запрос не сразу попадает на Apache, а сначала он приходит на nginx-сервер (своего рода распределитель запросов), а тот уже посылает его на Apache. Так вот, ошибка 504 Gateway Time-out обычно происходит из-за того, что сервер nginx передал запрос на Apache, но в течение определенного времени не получил от него ответ.

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

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

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

Слишком большое количество пользователей

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

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

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

php_value max_execution_time N

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

Юзеры ( 5 ) оценили на 4.0 из 5

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

Также мы собрали тарифы от тысяч хостеров, чтобы вы могли выбрать хостинг по конкретной цене.

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

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

VPS — подходит для более сложных проектов с достаточно большой нагрузкой и посещаемостью до 10000 человек в сутки. Здесь мощность сервера фиксированная для каждого виртуального сервера, при этом сложность настройки увеличивается.

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

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

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

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

Moneyback — период на протяжении которого хостер обязуется вернуть деньги, если вам не понравится хостинг.

Означает какая операционная система установлена на сервере хостинга. Мы рекомендуем размещать на серверах с Linux, если нет особых требований у разработчиков сайта.

Абузоустойчивый хостинг — компании, которые разрешают размещать практически любой контент, даже запрещенный (спам, варез, дорвеи, порнографические материалы). Такие компании не удаляют контент вашего веб-сайта при первой же жалобе (“абузе”).

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

Безопасный хостинг — тот, где администрация постоянно обновляет ПО установленное на серверах, устанавливает базовую защиту от DDoS-атак, антивирус и файерволлы, блокирует взломанные сайты и помогает их «лечить».

Защита от DDOS — компании, которые предоставляют хостинг с защитой от DDoS-атак. Такие пакеты ощутимо дороже обычных, но они стоят своих денег, так как ваш сайт будет защищен от всех видов сетевых атак.

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

ASP.NET — платформа для разработки веб-приложений от Майкрософт.

От панели управления зависит ваше удобство в настройке хостингесайта.

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

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

Ошибка под номером 504 наиболее распространена среди сайтов на просторах интернета. В подавляющем большинстве случаев пользователи видят надпись «504 Gateway Time-out (time out)» на белом фоне и уходят с сайта, не разбираясь в причинах потери работоспособности ресурса. Куда более неприятно видеть код 504 владельцам сайта, особенно если неизвестно какими причинами была вызвана ошибка и что нужно делать, чтобы её исправить.

Читать еще:  Как отключить брандмауэр в Windows 10 (или почему не работают сетевые игры, не загружаются файлы и пр.)

Что означает ошибка «504 Gateway Time-out»

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

Техническая сторона вопроса

В подавляющем большинстве случаев проблема с кодом 504 возникает:

  • если на сервере в качестве бэкенда установлен Apache;
  • при этом в качестве фронтенда установлен nginx.

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

Из-за чего появляется ошибка 504

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

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

Ошибка на стороне скриптов

Иногда код «504 Gateway Tme-out» вызывает не чрезмерная нагрузка, а неправильная настройка скриптов на сайте. Любому скрипту отводится определённый отрезок времени на выполнение. На практике, по ряду причин, этого времени скрипту может не хватить.

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

Задержка в процессе выполнения скриптов на сайте может вызываться и другими причинами:

  1. Если скрипту для работы необходимы внешние ресурсы (к примеру, база данных на стороннем сервере), которая на данный момент недоступна.
  2. Если скрипт работает не напрямую, а с установкой соединения через прокси-сервер. В случае недоступности прокси-сервера или превышения времени ожидания ответа скрипт также выдаст код 504.
  3. Скрипт загружает данные со сторонних серверов, которые на данный момент недоступны.

Как решить проблему 504

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

  1. Попробовать определить основные источники нагрузки на сервере. Нужно найти, какие именно запросы обрабатываются дольше всего и приводят к возникновению очереди и последующей ошибки 504, и оптимизировать эти места.
  2. Оптимизировать все скрипты. Желательно, чтобы загружаемые сайтом скрипты физически находились на том же сервере, что и сам сайт, или по крайней мере на физическом пространстве, находящемся под контролем владельца сайта. Если оптимизировать скрипты, настроить время их выполнения и выделить необходимые для этого серверные ресурсы, ошибка 504 перестанет возникать из-за скриптов.
  3. Можно пойти простым путём: просто увеличить ресурсы сервера, если есть такая возможность. Увеличение оперативной памяти, количества процессов httpd для Apache и другие меры повышения производительности приведут к тому, что серверу снова станет хватать ресурсов для выполнения запросов. Правда, подобное решение может являться лишь временной мерой, и с ростом нагрузки отсутствие должной оптимизации опять заявит о себе.

В том случае, если сайт с достаточно высокой посещаемостью (или требующий много ресурсов) располагается на обычном виртуальном хостинге, мощностей может элементарно не хватать. Некоторые хостеры присылают своим клиентам уведомления о превышении допустимой нагрузки, некоторые – нет. Следует посмотреть логи и запросить нужную информацию о технической поддержке хостинга. Вполне возможно, что с сайтом всё в порядке, просто из-за роста посещаемости пора переходить на VPS, VDS и другие тарифы и услуги с существенно большими ресурсами.

Видео

Из видео вы узнаете, как самостоятельно исправить ошибку «504 Gateway Time-out (time out)».

Как настроить?

Всё о Интернете, сетях, компьютерах, Windows, iOS и Android

Ошибка 504 Gateway Time-out Nginx — как устранить проблему

При попытке зайти на сайт Вы получаете сообщение ошибка 504 с текстом «Gateway Time-out. Nginx«. Такое сообщение появляется, как правило, на тех сайтах, где веб-сервер Nginx работает как фронт-энд для сервера Apache. Что это значит?
Несмотря на то, что ошибка 504 выдаётся именно Nginx, причиной появления её он не является, а сообщает нам о том, что долго ждал ответа от Апача, но так его и не дождался. Обычно такое происходит в тех случаях, когда на сервере, где расположен сайт, очень высокая нагрузка и он не успевает обрабатывать все HTTP-запросы. Как это устранить?

Если Вы посетитель сайта. В там случае у Вас только один выход — ждать пока администрация веб-ресурса решит проблему у себя. Вы, как простой посетитель, ничего сделать не сможете. Просто с некоторой периодичностью (раз в 2-3 часа) просто пробуйте зайти на страничку. Чаше не надо! Коли там действительно превышена нагрузка, то вы будете только «подливать масло в огонь».
В тех случаях, когда надо срочно посмотреть содержимое странички, а она пишет «Error 504 Gateway Time-out» — можно воспользоваться кешированной версией, которая храниться в веб-кеше крупных поисковых сервисов — Яндекс и Гугл. Для этого достаточно ввести адрес страницы в строку поиска и в найденном результате выбрать вариант «Сохранённая копия».

Если Вы администратор сайта. В этом случае возможны два варианта:
а) Вы арендуете VPS/VDS и имеете SSH-доступ к нему.
Начните с перезапуска серверов. Я покажу на примере Fedora/CentOS. Сначала рестартим Апач:

Затем — перезагрузим Nginx:

Не помогло? Тогда можно попробовать увеличить таймаут. Для этого в nginx.conf прописываем параметр:

По умолчанию его значение — 0.
Снова перезапускаем веб-сервер и смотрим изменилась ли ситуация.
Такой ход иногда может помочь. Но если на ресурс очень сильная нагрузка, то увеличив таймаут вы увеличите и количество ожидающих http-соединенний, а значит ещё повысите нагрузку, что крайне не желательно! А то плюсом добавится ещё и ошибка 502 Bad Gateway из-за перегруза httpd запросами.
Поэтому надо разобраться с тем, что же создаёт такую сильную нагрузку. Для этого воспользуемся командой:

Обратите внимание на значения в строчке «load average».

Его максимальное значение должно быть не более количества ядер у процессора. Ну плюс/минус 2. Если значение более 10 — надо бить тревогу. Обычно такое возникает в случае DDOS-атаки, из-за которой Apache забит Sync-запросами. Ишите с помощью команды netstat IP-адреса ботов и заносите их в DROP-правила пакетного фильтра Firewall.
Если на Вашем ресурсе Nginx работает вместе с PHP-FPM, то очень часто ошибка 504 возникает из-за медленных скриптов. Веб-сервер просто не дожидается результата выполнения. Спаси может помочь добавление параметра

б) Вы арендуете только хостинг без доступа к его настройкам.
При таком раскладе самостоятельно ничего сделать Вы не сможете и остаётся только обращаться в техподдержку Вашего хостинг-провайдера с просьбой устранить ошибку 504 Gateway Time-out. Обычно системные администраторы хостера помогают пользователям найти источник проблемы и устранить его. Если же они пошлют Ваш куда подальше, то выход будет только один единственный — менять хостинг-провайдера.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector
×
×