#Руководства
- 10 апр 2023
-
0
Вам придётся её пофиксить. This is the way!
Иллюстрация: Оля Ежак для Skillbox Media
Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.
Иногда сервер не виноват в том, что у вас не открывается веб-страница. Ошибка 504 — как раз об этом. Сервер ждёт, пока ему отдадут информацию, но его «подставляют» и приходится объяснять пользователю, почему всё так произошло.
Ошибка 504 (Gateway Time Out) возникает, когда сервер не получает ответа от сервера-посредника (или сервера-шлюза) за оговорённое время.
Рассмотрим эту ситуацию на примере VPN-сервиса. Когда пользователь включает его и пытается зайти на сайт, сначала отправляет запрос на VPN-сервер. Оттуда запрос перенаправляется на изначальный адрес, и по обратной цепочке ответ возвращается к пользователю. Но если случится так, что VPN-сервер будет слишком долго ожидать ответа от сайта и в итоге не получит его, то он вернёт пользователю ошибку 504.
В примере с VPN ситуация получается вот такой: главным сервером выступает VPN-сервер, к которому подключается пользователь, а сервером-шлюзом — сайт, на который пользователь хочет зайти. Ошибка возникает из-за того, что сайт слишком долго обрабатывал запрос, но при этом с VPN-сервером всё было в порядке. Поэтому мы и получаем именно код 504.
Сервер-шлюз — это посредник, который помогает основному серверу делать работу. Например, прокси-серверы могут шифровать данные, перед тем как отправить их на сайт. А кэш-серверы позволяют быстрее получать доступ к данным сайта и снизить нагрузку на основной сервер за счёт того, что сохраняются данные всех сайтов, которые запрашивали пользователи из конкретного региона.
Инфографика: Майя Мальгина для Skillbox Media
Обычно основной сервер тесно взаимодействует с несколькими шлюзами. Это уже стало нормой для интернета, потому что так можно быстрее передавать данные и увеличивать скорость работы сайтов благодаря распределению нагрузки. Каждый шлюз отвечает за определённую функцию, а основной сервер рассчитывает на них.
Если один из шлюзов сбоит, это влияет и на работу основного сервера. Он начинает либо сам обрабатывать запросы пользователей, либо ждать, пока заработает сервер-посредник. Именно в этот момент возникает ошибка 504 (Gateway Time Out).
Сообщение может выглядеть по-разному в зависимости от того, какой браузер установлен у пользователя. Вот несколько примеров из популярных браузеров:
- Google Chrome: «Ошибка 504 (Gateway Timeout): Сервер, обрабатывающий ваш запрос, не ответил вовремя».
- Mozilla Firefox: «Время ожидания ответа сервера истекло».
- Microsoft Edge: «Hmmm… не получилось загрузить эту страницу».
- Safari: «Невозможно открыть страницу. На сервере произошла ошибка 504».
А визуально она может выглядеть так:
В каждом из случаев ошибка 504 содержит короткое описание проблемы, плюс, как правило, в тексте есть просьба связаться с администратором сайта, чтобы он всё исправил.
Давайте ещё раз посмотрим, как возникает ошибка 504 (Gateway Time Out).
Представим, что вы заходите на сайт, который запрашивает большой объём информации из базы данных или с другого веб-сервера. Перед тем как отправить вам страницу, основной сервер ждёт, пока шлюз отработает и вернёт ему эти данные. Причём на эту работу шлюзу выделяется фиксированное время. Когда время истекает и ответа нет, сервер просто вернёт пользователю код 504 и не отдаст страницу.
Причин, по которым шлюз не отдаёт данные вовремя, может быть много. Но давайте остановимся на самых распространённых:
- Проблемы с сетью. Если интернет-соединение между шлюзом и основным сервером нестабильное или слабое, то первый просто не сможет передать данные, что и приведёт к ошибке 504.
- Проблемы с настройкой сервера или шлюза. Основной сервер или шлюз могут работать некорректно из-за неправильных настроек на них. Это тоже приводит к ошибке 504.
- Перегрузка сервера-шлюза. Если сервер-посредник завален запросами от других серверов, он не сможет быстро выполнить свою работу и отдать данные вовремя.
- Неправильные настройки балансировщика нагрузки. Представьте, что у нас есть два шлюза, но мы запрашиваем данные только из одного из них, хотя оба владеют одинаковой информацией. Такая неэффективность в работе может, опять же, привести к перегрузке одного из серверов.
- Проблемы с основным сервером. Бывает так, что и основной сервер может работать медленно или быть недоступным, что не позволяет ему принять нужные данные от шлюза.
Если знать причину, проблему легко исправить. Поэтому давайте разберёмся, как всё привести в норму.
Как пользователь, скорее всего, вы не сможете исправить проблему, хотя обычно это касается всех 500-х ошибок, например 500 и 503, потому что они возникают на стороне сервера. Хотя всегда остаётся небольшая вероятность, что проблема действительно на вашей стороне.
Итак, что вам стоит попробовать:
- Перезагрузите страницу в браузере, чтобы заново отправить запрос и вновь попытаться получить доступ к сайту. Иногда это может сработать.
- Почистите кэш и файлы cookies. Иногда всё решается за секунду.
- Проверьте подключение к интернету. Убедитесь, что ваше соединение работает стабильно и быстро (например, попробуйте открыть другие сайты).
- Запустите сайт в другом браузере. Или установите новый, если у вас в системе пока только обозреватель.
- Проверьте настройки прокси-сервера. Если вы используете его, то наверняка знаете об этом. А если думаете, что его нет, но проблема возникает на рабочем компьютере — уточните у системных администраторов, скорее всего, прокси-сервер действительно есть.
- Измените настройки брандмауэра или межсетевого экрана. Они могут блокировать доступ к определённым сайтам или страницам.
- Временно отключите антивирус. Как и брандмауэр, он тоже может блокировать доступ к некоторым сайтам.
- Включите VPN. Через VPN можно обойти многие проблемы с ограничением доступа к сайтам, и, возможно, он разрешит ваши трудности.
- Попробуйте зайти на сайт позднее. Возможно, сайт прямо сейчас испытывает большие нагрузки или проявились какие-то технические проблемы. Поэтому просто подождите, пока всё не исправят.
- Свяжитесь с администратором сервера. Если зайти на сайт нужно срочно, попробуйте написать в техподдержку. Не факт, что вам ответят (тем более быстро), но как минимум вы уведомите о проблеме команду сайта.
Если ничего не помогло, то, к сожалению, решить проблему не получится. Придётся ждать, пока команда сайта исправит всё на своей стороне.
Как администратор, вы можете сделать следующее:
- Написать хостинг-провайдеру или полистать его новости в соцсетях. Обычно там пишут, если возникли какие-то проблемы.
- Проверить логи сервера. Там обычно есть все ответы.
- Увеличить тайм-аут шлюза. Раз шлюз не может отправить данные так быстро, попробуйте увеличить тайм-аут.
- Изменить настройки балансировщика нагрузки. Если он установлен на вашем сайте, попробуйте поменять настройки и посмотреть, изменится ли ситуация.
- Оптимизировать базу данных. Если проблема возникает, потому что из базы данных запрашивается большой объём информации, попробуйте ускорить доступ к этим данным.
- Провести апгрейд сервера. Проблема может быть связана с тем, что шлюзу не хватает вычислительной мощности.
- Скачать все обновления. Устаревшее ПО может замедлять работу сервера. Поэтому стоит держать его в обновлённом состоянии.
Если вы попробовали всё и ничего не сработало, загляните в новостную ленту в соцсетях хостинг-провайдера снова — возможно, вы узнали об ошибке одним из первых и, когда заглядывали туда в первый раз, просто никто больше не успел пожаловаться на сбои. А даже если жалоб там снова не будет, напишите или позвоните в техподдержку — возможно, сбой на стороне хостинга наблюдается только у вас.
Чтобы избежать ошибки 504 (Gateway Time Out) в будущем, нужно следить за тем, как ведёт себя сервер и справляется ли он с нагрузками. Если вы вдруг обнаруживаете, что не справляется, пора делать следующее:
- Проанализировать логи сервера. Часто в них можно найти кучу полезной информации, поэтому не пренебрегайте ими.
- Оптимизировать код. Быстрый код — быстрый сервер. Логика простая, но на деле, конечно, всё может быть сложнее. Поэтому старайтесь сразу писать эффективный код.
- Использовать кэширование. Оно ускоряет доступ к контенту и уменьшает нагрузку на сервер. Очень удобно.
- Использовать балансировщик нагрузки. Он снижает нагрузку на отдельные серверы и позволяет им работать быстрее.
- Встроить системы мониторинга. Это то же самое, что и логи, но намного эффективнее. Они позволяют заранее выявлять проблемы и быстро их решать.
Однако даже при соблюдении всех этих правил ошибка 504 может возникнуть.
Выводы об ошибке 504 (Gateway Time Out):
- Ошибка 504 (Gateway Time Out) возникает, когда сервер не может получить ответ от сервера-посредника в установленный срок.
- Причинами могут стать, например, перегрузка, проблемы с интернетом или проблемы на шлюзе.
- Чтобы пользователю решить проблему, можно попробовать перезагрузить страницу, проверить соединение с интернетом, временно отключить антивирус или брандмауэр, а также обратиться к администратору внешнего сервера.
- Чтобы администратору исправить ошибку, нужно проверить логи, увеличить тайм-аут шлюза, настроить балансировщик нагрузки, оптимизировать базу данных и скачать все обновления.
- Если ничего не помогает, можно обратиться к хостинг-провайдеру за дополнительной помощью.
Научитесь: Профессия Веб-разработчик
Узнать больше
Иногда при посещении отдельных страниц сайта мы сталкиваемся с тем, что на экране вместо желаемого контента появляется сообщение об ошибке с цифровым кодом. Для «непосвященного» пользователя это просто набор цифр, но на самом деле в этих цифрах заложена определенная информация. Все они группируются по видам причин возникновения сбоя.
Сообщения, кодирующиеся в формате 5хх, говорят о проблеме на стороне сервера, например, когда невозможно выполнить запрос из-за нарушения связи между несколькими серверами. Ошибка 504 Gateway Time Out не является распространенной, но это не значит, что на нее не стоит обращать внимания, особенно владельцу сайта. Рассмотрим некоторые причины возникновения данной ошибки и способы ее устранения как на стороне обычного посетителя, так и администратором веб-ресурса.
Ошибка 504 Gateway Time Out – это код состояния HTTP, который появляется, когда в течение заданного периода времени один сервер не получает своевременный ответ от другого сервера, который действует как шлюз или прокси.
Описания ошибки могут иметь различную форму:
- 504 Gateway Timeout nginx
- Gateway Timeout Error
- HTTP Error 504
- 504 Gateway Time-out – The server didn’t respond in time
- HTTP Error 504 – Gateway Timeout
Наличие дополнительного словесного описания помогает конкретизировать причину возникновения сбоя.
Производительный хостинг в подарок при заказе лицензии 1С-Битрикс
Выбирайте надежную CMS с регулярными обновлениями системы и профессиональной поддержкой. А мы подарим вам год хостинга – специально для сайтов на 1С-Битрикс.
Заказать
Что делать посетителю сайта при возникновении ошибки 504
Итак, вы столкнулись с появлением на экране сообщения «error 504». Не спешите уходить с сайта, ведь возникновение сбоя может говорить о неправильной работе вашего браузера или даже наличии более серьезных проблем на уровне пользовательского софта. Попробуйте произвести довольно простые действия, чтобы убедиться, что с вашим программным обеспечением и настройками все в порядке.
- Перезагрузите проблемную страницу или текущий браузер. Если проблема устранилась и не повторяется вновь, особенно при посещении других сайтов, о ней можно просто забыть. При регулярном возникновении однотипных ошибок во время посещения разных ресурсов стоит покопаться в настройках собственного ПО поглубже.
- Зайдите на тот же самый сайт, где возникла ошибка сервера 504, используя альтернативный браузер. В случае, когда страница во время тестирования открылась корректно, обновите браузер, в котором случился сбой, до последней версии.
- Проверьте, как открываются страницы этого же сайта с другого компьютера или смартфона. Это позволит вам понять, не связано ли появление ошибки 504 с ПО конкретного устройства.
- При регулярном появлении HTTP ошибок, в т.ч. с кодом 504, очистите кэш браузера, удалите файлы cookies. Со временем в любом браузере накапливается много «мусора». Произведя очистку, вы поможете программе работать более корректно и даже быстрее.
- Произведите сброс настроек роутера или модема, отключив оборудование на некоторое время от сети. Данная операция вряд ли приведет к устранению ошибки 504, но может улучшить качество интернет-соединения. Провайдеры регулярно вносят изменения в настройки собственного софта, обновляют его. Иногда это приводит к конфликту в корректном взаимодействии пользовательского оборудования и серверов оператора. Перезагрузка устройства по питанию в большинстве случаев решает такие проблемы.
- Очистите кэш DNS. Данная операция кажется сложной для обычного пользователя, но на деле выполнить ее достаточно легко. Способ очистки зависит от вашей операционной системы, найдите соответствующий мануал в интернете.
- Для опытных пользователей подойдет рекомендация временно переключить DNS-сервер на Google Public DNS, что как минимум поможет определить, возник ли ошибочный код состояния HTTP по причине DNS проблемы.
Если после проведения всех вышеозначенных рекомендаций любая ошибка, в т.ч. 504 Gateway Time Out, продолжает возникать регулярно, обратитесь в техподдержку проблемного интернет-ресурса.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Решение проблем с появлением ошибки сервера 504 администратором веб-ресурса
Некорректная работа сайта чаще всего просто раздражает посетителя и приводит к тому, что пользователь находит альтернативный ресурс. Для владельца сайта такие сбои могут носить более глобальные последствия. Поэтому очень важно своевременно обнаруживать баги и максимально быстро устранять их. Для раннего мониторинга стоит использовать все возможные инструменты:
- проводить регулярную симуляцию пользовательского поведения на сайте;
- настроить автоматизированный мониторинг работоспособности ресурса как встроенными инструментами администрирования, так и с использованием специальных скриптов;
- обеспечить качественную работу службы технической поддержки сайта, своевременную обработку всех поступающих сообщений, особенно связанных с информацией о появлении разного рода ошибок на стороне пользователя.
Соблюдение последнего правила не только позволит практически без дополнительных затрат отслеживать все возможные проблемы, которые возникают при посещении сайта. Своевременная обработка пользовательских запросов, быстрый ответ, выдача рекомендаций и публичное обсуждение повышают лояльность и создают дополнительный PR-эффект.
Почти все ошибки с кодом 5хх, возникающие из-за невозможности обработки определенного количества запросов, поступающих на сервер, решаются методом апгрейда железа (использованием высокопроизводительного хостинга) либо оптимизацией работы программного обеспечения. Второй способ зависит от вида движка, на котором создан конкретный сайт. При использовании условно-бесплатных программ (WordPress, OpeneCart и других) все проблемы придется решать на уровне администрирования, с привлечением конкретного веб-программиста, разработавшего данный сайт. Если баги возникают на платных платформах (1С-Битрикс, UMI.CMS, NetCat CMS), напишите об ошибке 504 Gateway Time Out в техподдержку разработчика. Отправить сообщение о проблеме следует и разработчикам платных скриптов, если они установлены на вашем сайте, и вы считаете, что сбои возникают по причине их некорректного исполнения.
Вот некоторые причины, приводящие к возникновению ошибки 504 Gateway Time Out
- Резкий скачок нагрузки на сайт вследствие поступления большого количества внешних запросов, вызванного DDoS-атаками или действиями вирусного ПО, пиковым посещением сайта, например, в момент проведения различных акций в интернет-магазине, или единовременной загрузкой на сайт большого объема контента (импорт информации из CSV- или XML-файлов).
- Некорректная работа скриптов, плагинов и дополнений, конфликтующих как между собой, так и внутри.
- Превышение лимита доступных ресурсов при использовании виртуального хостинга.
Еще одна возможная причина возникновения ошибки 504 – исполняемый скрипт не укладывается в отведенный лимит времени. Это бывает, когда скрипт обращается к другим сайтам либо просто выполняет тяжелую операцию, например, строит поисковый индекс.
Рекомендации по устранению ошибки 504 Gateway Time Out методами администрирования сайта
Ошибка 504 Gateway Time Out может быть вызвана недавними изменениями или обновлениями на сайте. Если после отката к состоянию, предшествующему изменениям, баг исчез, следует найти конкретное действие, повлекшее возникновение ошибки. Для этого необходимо проверить журнал ошибок соответствующей CMS. Пользователи WordPress могут включить журналирование ошибок в файле wp-config.php добавлением следующих строк:
define( 'wp_debug', true );
define( 'wp_debug_log', true );
define( 'wp_debug_display', false )
Все возникающие варианты ошибок будут записаны в файле wp-contents/debug.log.
Для проверки работоспособности плагинов и расширений попробуйте отключить те, которые вызывают подозрение как источники возникновения ошибки 504. В первую очередь это касается устаревших скриптов, но причиной могут оказаться и обновления. Если проблема исчезла, далее следует найти некорректный плагин или дополнение и устранить или исправить его. Один из способов улучшения работы исполняемого скрипта – увеличить значение параметра PHP max_execution_time или облегчить скрипт.
При использовании CDN для более быстрого получения контента, в частности CloudFlare, который работает как CDN и как сервис предотвращения негативных последствий от DDoS, вы можете столкнуться с двумя типами ошибок 504. В случае возникновения проблемы на стороне CloudFlare лучшим решением будет связаться с поддержкой CloudFlare или отключить его. Второй вариант – когда сбой возникает на стороне хостинг-провайдера. В этой ситуации также необходимо обратиться в службу поддержки хостера.
Часто ошибку 504 можно видеть на серверах, где используется VPS-хостинг и установлен Nginx в качестве фронтенда и Apache в качестве бэкенда. Для устранения проблемы в Apache можно увеличить значение timeout по умолчанию в файле httpd.conf:
# Timeout: The number of seconds before receives and sends time out. Timeout 600
Также увеличить лимит в max_execution_time в php.ini:
После внесения изменений следует перезапустить Apache. Ошибка 504 Gateway Time Out должна исчезнуть.
Аналогичным образом проблема с появлением ошибки HTTP 504 решается пользователями Nginx. Попробуйте увеличить такие параметры в файле /etc/nginx/conf.d/timeout.conf:
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
Также рекомендуется увеличить max_execution_time в php.ini:
Далее перезапустите Nginx и откройте сайт.
Более простым решением устранения данной проблемы является использование панели управления сервером.
Данный способ позволяет администрировать настройки веб-сервера без использования консоли, один раз настроить их под ваш проект и больше не подключаться к серверу без острой необходимости.
Например, в бесплатной панели управления Vesta Control Panel достаточно внести изменения в раздел «Сервер» и навсегда забыть о возможности возникновения ошибок на сайте.
И далее внести соответствующие изменения.
Аналогичным способом проблема устраняется и при использовании альтернативных панелей управления хостингом – Ajenti, CentOS Web Panel, ISPmanager и других.
Если вы считаете, что появление 504 Gateway Timeout вызвано превышением лимита использования ресурсов серверного железа, оптимальным решением будет аренда выделенного сервера или VPS. Когда ваш сайт уже размещен на виртуальном хостинге, но ни одна из рекомендаций не привела к исправлению error 504, обратитесь к хостинг-провайдеру. В этом случае подробно опишите причины, которые, как вы полагаете, привели к появлению сбоя.
Заключение
В данной статье мы рассмотрели основные причины возникновения ошибки HTTP 504 Gateway Timeout и популярные способы устранения неполадки. Уверен, некоторые администраторы веб-ресурсов сталкивались с подобными проблемами, выходящими за рамки приведенных примеров и рекомендаций.
Буду благодарен, если вы поделитесь своим опытом в комментариях.
Код ошибки в формате 5хх говорит о том, что на стороне сервера есть проблема: сервер не может обработать запрос от клиента. Клиентом в данном случае выступает браузер.
Ошибка 504 Gateway Time Out возникает, когда в заданный промежуток времени сервер не получает ответ от другого сервера, при этом другой сервер выполняет роль прокси или шлюза.
Ошибка 504 что значит
Какие ещё бывают варианты отображения ошибки:
- HTTP Error 504,
- Gateway Timeout Error,
- HTTP Error 504 – Gateway Timeout,
- 504 Gateway Timeout nginx,
- 504 Gateway Time-out – The server didn’t respond in time,
- Ошибка 504 Время ответа сервера истекло,
- Время ожидания шлюза (504),
- Ошибка тайм-аута шлюза,
- HTTP 504,
- 504 Ошибка.
В этой статье мы расскажем, как устранить код ошибки 504.
Как исправить ошибку 504 посетителю сайта
Итак, вы перешли на сайт, но вместо веб-страницы видите сообщение с кодом 504.
Что такое тайм аут шлюза
Проблема может быть как со стороны сайта, так и со стороны устройства, например настроек браузера.
Чтобы убедиться в том, что настройки браузера в порядке:
1) Обновите страницу. Но обновите не клавишей F5, а выделите содержимое адресной строки и нажмите Enter. Если после этих действий ошибка 504 не возникает ни на текущем, ни на любом другом сайте – её можно проигнорировать.
2) Зайдите на тот же ресурс через другой браузер. Если в этом случае сайт открылся корректно, перейдите к следующему пункту.
3) Очистите кэш браузера и удалите файлы cookie. После этого браузер будет работать быстрее.
Воспользуйтесь инструкцией Как очистить кэш браузера.
4) Перезагрузите роутер или модем. Отключите устройство от сети примерно на 10 минут.
5) Очистите кэш DNS. Для этого воспользуйтесь инструкцией ниже.
Как очистить кэш DNS
В зависимости от вашей операционной системы очистите кэш по одной из инструкций.
1) Откройте командную строку. Для этого введите в поисковую строку «Командная строка» и выберите появившееся приложение:
2) Введите команду:
3) Дождитесь сообщения об очистке кэша:
1) Откройте терминал клавишами Ctrl+Alt+T.
2) Введите команду:
Для Ubuntu:
sudo service network-manager restart
Для других дистрибутивов:
sudo /etc/init.d/nscd restart
1) Войдите в терминал. Для этого нажмите клавиши Command + Space. Введите Терминал и нажмите на найденное приложение.
2) Введите команду:
sudo killall -HUP mDNSResponder
Готово, вы очистили кэш DNS.
6) Обратитесь в техподдержку вашего интернет-провайдера. Возможно, это проблема сети, за которую отвечает провайдер.
Если эти действия не принесли результата – обратитесь в техническую поддержку сайта.
Если вы владелец сайта
Как исправить ошибку 504 на виртуальном хостинге
1 способ
Эта ошибка может возникнуть в случае, если для Nginx был превышен лимит на время ответа сайта. По умолчанию это 30 секунд, при этом среднее время загрузки сайта не должно превышать 1-3 секунды.
Если скрипты вашего сайта должны исполняться дольше 30 секунд, вы можете миновать Nginx и обратиться к сайту по другим портам. Если ваша панель управления хостингом:
- ISPManager – используйте порт 8081
- cPanel или Plesk – используйте порт 8080.
2 способ
Если этот вариант вам не подходит, рекомендуем перенести ваш сайт на Облачный сервер, на котором доступна гибкая настройка сервера, в том числе и лимитов. Для этого закажите услугу «Облачные серверы» и перенесите сайт по инструкции Как перенести сайты между услугами REG.RU.
3 способ
Также вы можете изменить директиву max_execution_time в файле php.ini. Она указывает на время, за которое должен отрабатываться скрипт. Для этого:
- 1.
-
2.
Укажите нужное значение в строке:
Где 30 – время выполнения скрипта в секундах.
4 способ
Если вы используете CDN, проблема может быть связана с ней.
Что такое CDN
CDN – это сетевая инфраструктура, которая распределена географически. Она обеспечивает быструю загрузку контента пользователям веб-сервисов и сайтов. Серверы, которые входят в состав CDN, географически расположены так, чтобы сделать время ответа сайта или сервиса минимальным для пользователей.
Пользователь ищет ресурс и тем самым посылает запрос. Запрос идентифицируется и направляется на PoP – на ближайший к пользователю кэширующий сервер в этой инфраструктуре. Возможны два варианта:
- Если в кэше PoP есть данные об этом запросе, он отвечает браузеру, а тот отображает контент.
- Если в кэше этого сервера нет данных, запрос переадресовывается к ориджину – центральному серверу, на котором хранятся все данные. Когда ориджин отвечает на запрос, PoP кэширует его и передаёт ответ браузеру. После этого контент отображается в браузере.
Ошибку 504 может вернуть кэширующий сервер, если превышено время ожидания от центрального сервера.
Если ошибку исправить не удалось, обратитесь в техническую поддержку.
Как исправить ошибку 504 на VPS
1 способ
Эта ошибка может возникнуть в случае, если для Nginx был превышен лимит на время ответа сайта. По умолчанию это 30 секунд, при этом среднее время загрузки сайта не должно превышать 1-3 секунды.
Чтобы избавиться от этой ошибки, попробуйте повысить время ожидания веб-сервера Nginx.
2 способ
Также ошибка 504 может возникать, когда Nginx используется как прокси-сервер для Apache. В этом случае нужно настроить параметры времени ожидания при проксировании. Максимальное время исполнения скрипта в настройках веб-сервера — 300 секунд.
Изменить параметры ожидания можно в конфигурационном файле nginx.conf. Для этого:
-
1.
Подключитесь к серверу по SSH.
-
2.
Откройте конфигурационный файл с помощью команды:
sudo nano /etc/nginx/nginx.conf
-
3.
Добавьте строки в блоке server:
#server { #... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; #... #}
Где 600 — время в секундах.
-
4.
Перезапустите Nginx с помощью команды:
Если решить проблему не удалось, обратитесь в техническую поддержку или на тематические форумы по Nginx.
Чтобы на веб-странице появился контент, браузер должен получить от сервера, на котором расположен сайт, необходимые данные. Когда на устройстве пользователя, на веб-сервере или на другом промежуточном узле (например, прокси) возникают неполадки, вместо содержимого сайта в браузере появляется страница с ошибкой. Для устранения сбоя, необходимо знать, на чьей стороне он произошел и по какой причине. Понять, что является источником проблемы, помогает цифровой код ошибки. Если он имеет формат 5xx, значит, сбой происходит на стороне сервера. Разбираем в статье ошибку 504 на сайте и способы ее устранения.
Что значит ошибка 504 и когда она появляется
Ошибка 504 Gateway Time Out — это ошибка, возникающая при загрузке сайта, если запрос пользователя передавался на сервер, хранящий данные веб-ресурса, через промежуточный сервер, действующий как шлюз или прокси, и в процессе обработки данного запроса один из серверов не получил ответ от другого в течение максимально допустимого времени ожидания. Обмен данными происходит по HTTP, и если возникает «тайм-аут шлюза», браузер показывает на веб-странице код 504, указывающий на соответствующее состояние протокола.
На выполнение некоторых операций на сервере выделяется определенное количество времени. Например, обработка http-запроса на Nginx по умолчанию должна быть завершена за 30 секунд. Лимит времени устанавливается для того, чтобы при избыточной нагрузке сервер мог прервать процесс, который не может выполнить, и перейти к следующей задаче. Средняя продолжительность загрузки сайта составляет всего 1–3 секунды, однако иногда она может увеличиваться, например, если сервер выполняет ресурсоемкие скрипты. Когда на это требуется больше максимально допустимого времени, соединение с клиентом (браузером) разрывается и возникает один из вариантов сообщения «HTTP Error 504 — Gateway Timeout». К повышенной нагрузке на сервер могут привести внутренние сбои на сайте, проблемы с безопасностью, настройки браузера и так далее.
Если говорить простыми словами, то ошибка 504 означает, что сервер, на котором расположен сайт, не успевает вовремя обработать запрос и ответить пользователю.
Как исправить ошибку 504 владельцу сайта
Чтобы исправить ошибку 504, необходимо установить и устранить причину ее возникновения. Некоторые способы решения проблемы требуют вмешательства администратора сайта.
Долго обрабатывается скрипт
Если скрипт тяжелый, сервер может не успеть полностью его обработать до появления ошибки. Лучшим решением проблемы будет облегчение скрипта или его замена. Когда это невозможно, увеличивают период ожидания сервера. Лимит времени, за которое скрипт должен быть отработан, устанавливается через директиву «max_execution_time» в файле «php.ini». По умолчанию он составляет 30 секунд. Чтобы он стал больше, необходимо открыть файл и подставить в строку «max_execution_time = 30» новую допустимую продолжительность операции. Кроме того, поменять настройки можно в Nginx и Apache.
Нестандартные параметры времени ожидания сервера могут понадобиться, если вы используете Nginx в качестве прокси-сервера для Apache. Изменение времени выполнения скрипта на веб-сервере производится в файле «nginx.conf». Порядок действий:
- Подключение к серверу по Secure Shell (протоколу для удаленного управления операционной системой).
- Ввод команды «sudo nano/etc/nginx/nginx.conf» для запуска файла.
-
Редактирование блока server: увеличение времени до наступления тайм-аута с 300 секунд до 600:
- Перезагрузка веб-сервера командой «service nginx reload».
Коррекцию файлов «php.ini» и «nginx.conf» лучше проводить совместно. В обоих документах необходимо указать одинаковое время обработки запроса.
При использовании Apache время обработки запроса редактируется через «httpd.conf». Что необходимо сделать:
- Открыть файл.
-
Ввести строку:
- Сохранить корректировки и заново запустить сервер.
Проблемы с CDN
CDN ― это несколько связанных серверов, предназначенных для того, чтобы ускорить передачу данных сайта его пользователям. CDN сохраняют контент, часто запрашиваемый аудиторией, на кеш-сервере. При повторном запросе этих данных сервер достает их из временной памяти. Таким образом, снижается нагрузка на сервер, являющийся источником контента, и сокращается время обработки запросов пользователей.
Иногда ошибка 504 может возникать при использовании CDN. Если после отключения от системы работоспособность сайта восстановится, сообщите о проблеме разработчикам сервиса.
Выросла нагрузка на один из серверов
К повышенной нагрузке на сервер может привести резкий рост трафика. Наплыв пользователей может быть связан как с намеренными действиями владельца веб-ресурса — с запуском рекламной кампании, так и со случайными событиями — временным увеличением спроса на сезонный товар, продающийся в интернет-магазине. Поскольку количество операций, которое сервер может выполнять одновременно, ограничено его вычислительной мощностью, при избыточной нагрузке хостинг-компьютер перестает отвечать на запросы пользователей. Чтобы он снова мог отдавать данные браузеру, достаточно арендовать компьютер с более мощным железом, например, с виртуального хостинга перейти на VPS. Если планируется проведение маркетинговых мероприятий, лучше заранее арендовать дополнительные вычислительные ресурсы (оперативную память, место на жестком диске и т. д.).
В компании «Интернет Хостинг Центр» клиенты могут арендовать VPS сервер в России с бесплатной защитой от DDoS на всех тарифах. Выделенный IP и техподдержка входят в стоимость.
Проверка службы DNS
Сообщение «Error 504 — Gateway Timeout» может появиться, если DNS-служба не справилась с преобразованием доменного имени в IP-адрес. Причиной ошибки становится перенос веб-ресурса с локального ПК на веб-сервер и автоматически пропадет, после того как новые DNS-данные распространяются по всему Интернету. Процесс занимает около двух суток.
Проблемы с DNS могут возникнуть на компьютере пользователя. Для их устранения на ПК вызывается командная строка операционной системы, где вводится специальная команда для очистки DNS-кэша, в Windows — это «ipconfig /flushdns».
Спам, вирусы и DDoS-атаки
Перегрузка сервера может быть вызвана не только возросшим интересом пользователей к вашим товарам и услугам, но и менее позитивными причинами — спамом, вирусами и DDoS-атаками. Для защиты веб-ресурса от вредоносных программ и действий хакеров, необходимо предпринять несколько профилактических мер:
- проверить наличие антивируса в административной панели хостинга;
- включить защиту от DDoS;
- подключить анти-спам плагины в CMS сайта;
- проверить лог-файлы на наличие часто повторяющихся IP-адресов;
- установить SSL/TLS;
- защитить формы обратной связи с помощью капчи;
- предотвратить публикацию комментариев со ссылками на вредоносное ПО, подключив модерирование контента и так далее.
Проблемы с плагинами в CMS
Функции на сайте, созданном с помощью CMS, реализуются благодаря плагинам. Не все они работают достаточно быстро, некоторые из них обрабатываются медленно, что приводит к тайм-ауту шлюза. Чтобы проверить, не является ли установленный плагин причиной сбоя, его необходимо отключить, а затем запустить сайт без него. Если веб-ресурс загрузится, значит, нужно выбрать другой функциональный модуль.
Как решить проблему, если вы — пользователь
Неполадки могут возникнуть на стороне пользователя: в его DNS-службе, браузере, программном обеспечении, роутере или модеме. Убедитесь, что настройки ваших устройств, выставлены правильно:
- обновите страницу, заново указав URL в адресной строке и нажав кнопку ввода (Enter);
- откройте сайт в другом браузере, если в нем сбой не повторится, обновите браузер с ошибкой до последней версии;
- запустите веб-ресурс на другом устройстве, чтобы проверить, не связаны ли проблемы с программным обеспечением вашего компьютера;
- очистите файлы кэша и cookies, чтобы избавиться от ошибок, накопленных браузером за длительное время использования;
- перезагрузите роутер, чтобы устранить конфликт между обновленным ПО провайдера и вашим устройством;
- очистите кэш DNS через командную строку ОС.
Заключение
Мы разобрали самые популярные причины возникновения ошибки 504 и привели способы решения каждой из них. Надеемся, что наша статья поможет Вам справиться с любой проблемой, способной привести к тайм-ауту шлюза.
Ошибка 504 Gateway Timeout (от англ. «тайм-аут шлюза») — это код состояния HTTP, который указывает на то, что веб-сервер не получил своевременного ответа от вышестоящего сервера при попытке загрузить страницу. Простыми словами, ошибка 504 Gateway Timeout — это свидетельство о сбое на сервере, когда он выступает шлюзом или в качестве прокси.
В нашей статье клиент — браузер, а сервер — специализированная или выделенная машина.
Как выглядит ошибка 504
В зависимости от конфигурации у ошибки 504 есть различные формы написания:
- 504 Error.
- «Время ответа сервера истекло».
- HTTP Error 504.
- «Ошибка таймаута шлюза».
- Gateway timeout.
- The server didn’t respond in time.
Точный текст ошибки зависит от того, какой именно сервер используется в качестве фронта и какой в качестве бэка. Самые частые сценарии — Nginx и Apache, соответственно.
Почему возникает ошибка 504
Самая популярная причина — перегрузка сервера. Давайте посмотрим, почему она происходит и какие источники встречаются наиболее часто.
Источник перегрузки может быть связан как с непрогнозируемым наплывом трафика, так и с ошибками, которые возникают на самом сайте. Так что даже источник сбоя на сервере может относится к внутренним сбоям сайта.
Ошибки от плагинов
Многие веб-мастера устанавливают большое количество разнообразных плагинов для расширения функционала сайта. Например, для внедрения кеширования страниц или добавления на сайт CDN (сеть доставки контента). Подобные плагины могут загружать данные со сторонних источников — например, удаленных серверов. Если на таком сервере возникает сбой, определенная страница или сайт целиком может начать отдавать 504-ю ошибку.
Ошибки от скриптов
Это то же самое, что и ошибки от плагинов, так как плагин представляет из себя один или несколько скриптов. Если скрипт загружает данные с удаленного сервера, но возникает сбой или задержка при выполнении, может появиться ошибка Gateway Timeout. Когда один или несколько скриптов выполняются слишком долго, это приводит к таймауту.
Аномальное увеличение посещаемости
Если на сайте резко увеличивается трафик, сервер может работать медленнее. Чем больше трафика, тем больше запросов к серверу. Со временем количество неотвеченных запросов только увеличивается, в итоге взаимодействие с сервером прекращается и отправляется код состояния 504 Bad Gateway.
Израсходование лимитов тарифного плана хостинга
Начальные тарифы не предназначены для сайтов с высокой посещаемостью. В панели управления хостингом убедитесь, что статическая нагрузка, оперативная память, дисковая квота и другие ресурсы сервера не превышаются.
Загрузка на сайт файлов
Каждый раз, когда вы обращаетесь к сайту через административную панель, статическая нагрузка на сервер повышается. Например, вы загружаете видео или большое количество изображений либо импортируете длинный список товаров в интернет-магазин XML-файлом.
Во всех вышеуказанных сценариях статическая нагрузка на сервер будет заметно увеличиваться, так как каждый переданный мегабайт требует дополнительных вычислительных ресурсов от серверной машины.
Хакерские атаки
504 ошибку могут вызывать различные атаки на сайт — например, распределенная атака типа «отказ в обслуживании». Чтобы диагностировать эту причину — обратитесь в поддержку хостинга. Если атака подтвердится — установите на сайт защитный экран, например Cloudflare.
Вредоносный код в файлах сайта
Вирусы, шелы, бэкдоры и другие уязвимости сайта могут привести к тому, что он будет заражен вредоносным кодом. В этом случае можно ожидать самое непредсказуемое поведение ресурса, включая появление разнообразных кодов состояния HTTP и других негативных последствий, например, утечки данных. Это зависит от того, какую цель преследует хакер, пытаясь воздействовать на ваш сайт.
Ошибка в браузере
В редких случаях код ответа 504 может свидетельствовать о некорректной работе браузера. Например, у вас отключен JavaScript или в кэше накопилось большое количество ошибок. Все это может привести к тому, что страница не будет загружаться корректно. Попробуйте сменить браузер или устройство и откройте проблемную страницу. Если получилось, то это именно ваш сценарий.
Как исправить ошибку 504 вебмастеру
Теперь рассмотрим, как решить ошибку самостоятельно. Отдельно пользователю и отдельно вебмастеру.
У вебмастера есть гораздо больше возможностей, чтобы повлиять на ошибку.
- Во первых: нужно обратиться в саппорт используемого хостинга и уточнить, не превышены ли лимиты по использованию ресурсов серверного железа на вашем аккаунте. Если вы укладываетесь в ограничения выбранного тарифного плана, то нужно искать другой источник появления 504-й.
- Во вторых: вспомните, какие глобальные изменения вы делали на сайте в последнюю неделю или две. Возможно вы меняли тему (дизайн) сайта, глобальный вид URL или устанавливали какие-либо плагины.
Если вы вспомнили конкретное изменение, просто откатитесь к предыдущей версии: например, удалите плагин или верните старую тему сайта.
«У меня VPS с Nginx / Apache»
С такой конфигурацией сервера возникновение 504 ошибки встречается довольно часто. Чтобы устранить ее, найдите конфигурационный файл сервера, который называется httpd.conf. Находится он в дистрибутиве Apache, соответственно. Что нужно сделать:
- Устанавливаем значение тайм-аута на 700 секунд и сохраняем файл. Перезагружаем бэкенд (для этого используем команду service nginx reload) и проверяем, ушла ошибка или нет.
- Находим файл php.ini. Открываем его и изменяем значение максимального времени исполнения на 300 секунд. Опять перезагружаем backend (используем команду service nginx reload) и проверяем, ушла ошибка или нет.
В некоторых случаях изменить время максимального исполнения файла не удастся, так как это может быть запрещено конфигурацией сервера.
Изменение портов в панели управления хостингом
Также попробуйте изменить порты для обращения к сайту. Так вы решите проблему в случаях, когда выполнение скрипта занимает продолжительное время (более 30 секунд). В разных панелях управления хостингом нужно устанавливать разные порты. Например в Plesk — это 8080, в ISPManager — 8081.
«У меня на сайте используются CDN: что делать»
Выше мы уже говорили о том, что кэширующий сервер может стать причиной длительного ожидания ответа от главного сервера. Чтобы решить эту проблему, отключите сеть доставки содержимого на своем сайте. После этого очистите кэш сайта и попробуйте открыть проблемную страницу. Если ошибку 504 вызывал CDN, то страница сразу откроется.
Перенос сайта на другую сетевую конфигурацию
Если изменить значение максимального времени исполнения в php.ini для вас затруднительно, вы можете просто перейти на облачный тариф хостинга. В облачной инфраструктуре доступно тонкое управление параметрами сервера, включая регулировку технических ограничений.
Включите журналирование ошибок
Этот способ поможет точно установить, в каком именно месте происходит ошибка, не позволяющая открыть страницу. В CMS журналирование может активироваться разными способами. Например, на WordPress необходимо открыть файл wpconfig.php и добавить в него три PHP-константы для установки отладки:
define( ‘wp_debug’, true );
define( ‘wp_debug_log’, true );
define( ‘wp_debug_display’, false );
Сохраняем wpconfig.php. Все, теперь логирование ошибок включено и вы сможете посмотреть источник ошибки в журнале.
«У меня веб-сервер nginx: что делать»
В дистрибутиве сервера найдите конфигурационный файл тайм-аута и измените значения для времени:
- таймаута для отправки прокси;
- тайм-аута для чтения прокси;
- времени отправки тайм-аута.
Обычно конфигурационный файл тайм-аута находится в следующей директории:
Важно: перед открытием конфигурационного файла обязательно подключитесь по протоколу SSH.
Если вы используете VPS, необязательно вручную искать конфигурационный файл, чтобы изменить значение параметров. Просто откройте административную панель сервера, найдите настройки сервера и добавьте необходимые значения. Как правило, настройки php.ini и параметры httpd всегда разнесены по разным вкладкам. Справедливо это для ISPmanager, Ajenti, Vesta Control Panel и других популярных панелей управления сервером, например, CentOS Web Panel.
Неполадки сервера
Создайте тикет в саппорте хостинга и уточните, существуют ли на данный момент какие-либо неполадки с сервером. Это довольно редкий сценарий, но проверить его также необходимо, если ошибку не удалось устранить вообще никакими из вышеописанных способов.
Как исправить ошибку 504 пользователю
Попробуйте открыть проблемную страницу из другого браузера. Если причина сбоя в некорректных настройках обозревателя, этот способ позволит подтвердить такой источник ошибки.
Очистка DNS
Очистите кэш DNS в используемой операционной системе:
- На macOS необходимо открыть «Терминал» и указать команду sudo killall -HUP mDNSResponder.
- На Windows нужно открыть командную строку и ввести команду: ipconfig /flushdns.
Другие способы
Если очистка DNS-кэша не помогла, попробуйте выполнить следующие действия
- Обновите страницу с очисткой ее кэша. Для этого используется сочетание горячих клавиш Control + F5. В редких случаях в кэше могут накапливаться ошибки, особенно если вы часто посещали сайт, на котором теперь возникает ошибка.
- Попробуйте открыть проблемную страницу с другого устройства. В редких случаях в системе могут накапливаться ошибки, которые препятствуют открытию всего сайта или конкретной страницы. Диагностировать эту причину и поможет смена устройства.
- Удалите временные файлы браузера, включая кэш-файлы и файлы-куки.
Заключение: профилактика появления Gateway timeout для вебмастера
Прежде чем выбирать тариф хостинга, обязательно поинтересуйтесь в поддержке, какой тарифный план подойдет для вашего сайта. При этом вы должны будете предоставить данные по текущему трафику, размеру сайта, а также:
- Какие ресурсы серверного железа вы планируете использовать.
- Что хотите настраивать.
- Наличие каких технологий для вас является критически важным.
Так вы сможете выбрать максимально подходящий и быстрый сервер под свои задачи. Ну а 504 ошибка точно не будет появляться на сайте.