Не зная точных сведений о сайте, таких как его конфигурация сервера, план хостинга, сторонние плагины и привлекаемый им трафик, исправление ошибки 504 Gateway Timeout может показаться разочаровывающим и утомительным.
Поскольку задействовано много переменных, мы рекомендуем вам начать с исправления проблем на стороне клиента, которые встречаются довольно редко, а затем перейти к исправлению проблем на стороне сервера. Обычно они виноваты в ошибке 504.
Попробуйте перезагрузить веб-страницу
Первое, что вы можете попробовать при возникновении ошибки 504 Gateway Timeout - это подождать несколько минут и попробовать перезагрузить страницу.
Вы можете нажать клавишу F5, чтобы обновить (перезагрузить) веб-страницу в большинстве браузеров. Чтобы удалить кеш браузера страницы перед перезагрузкой, вы можете вместо этого нажать комбинацию клавиш CTRL + F5.
Пока вы это делаете, вы также можете попробовать загрузить сайт в другом браузере. Поскольку большинство ошибок 504 вызвано временно перегруженными серверами, использование этого решения может принести результат.
Перезагрузите сетевые устройства
Иногда проблемы с вашими сетевыми устройствами, такими как модем или маршрутизатор, могут привести к ошибке 504 Gateway Timeout. Перезагрузка этих устройств может помочь вам решить проблему.
Хотя вы можете выключать все эти сетевые устройства в любом порядке, порядок их включения важен. Как правило, эти устройства включаются «снаружи-внутрь», следуя порядку подключения от интернет-провайдера к вашему основному клиентскому устройству.
Проверьте настройки вашего прокси
Прокси-сервер находится между вашим устройством и Интернетом. В основном он используется для повышения конфиденциальности в Интернете, скрывая личную информацию (например, местоположение устройства) от веб-сайтов и веб-серверов.
Хотя прокси-серверы редко вызывают ошибку 504, иногда причиной могут быть неправильные настройки прокси-сервера. Вы можете отключить прокси-сервер и попробовать перезагрузить веб-страницу, чтобы посмотреть, влияет ли он на ошибку.
Большинство клиентов не используют прокси-сервис, поэтому вы можете пропустить этот шаг, если уверены, что не используете какой-либо прокси-сервер. Однако вы могли установить его, даже не зная об этом. Мы предлагаем вам проверить настройки прокси-сервера вашего устройства и браузера, чтобы исключить эту причину.
Проблемы с DNS
Ошибка 504 Gateway Timeout также может быть вызвана проблемами DNS на стороне сервера или на стороне клиента (или на обоих).
Наиболее вероятной причиной проблемы DNS на стороне сервера является то, что полное доменное имя не соответствует правильному IP-адресу или DNS-сервер не отвечает. Обычно это происходит, когда вы только что перенесли свой сайт на новый сервер или хостинг. Следовательно, важно дождаться полного распространения записей DNS домена, что может занять до 24 часов.
Для устранения проблем с DNS на стороне клиента вы можете попробовать очистить локальный кеш DNS. Это похоже на очистку кеша браузера, за исключением того, что здесь вы очищаете кеш DNS из операционной системы.
Если вы используете Windows, вы можете очистить кеш DNS, открыв командную строку и введя следующую директиву:
ipconfig /flushdns
Вы должны увидеть сообщение «Кэш преобразователя DNS успешно очищен», если это сработало.
Для последних версий macOS вы можете открыть терминал и выполнить следующую команду:
sudo killall -HUP mDNSResponder
Вы не увидите никаких уведомлений в macOS, когда процесс завершится, но вы можете изменить это, добавив команду со своим собственным сообщением.
sudo killall -HUP mDNSResponder; DNS Cache was cleared successfully
Если вы используете старые версии macOS, команда, которую вам нужно ввести, зависит от того, какую версию macOS вы используете. Для получения дополнительной информации вы можете обратиться к разделу по очистке DNS в подробном руководстве на сайте macOS.
Если вы используете операционную систему Linux, то процесс очень похож на macOS, поскольку Linux также использует терминал в качестве интерфейса командной строки. Поскольку существует множество дистрибутивов Linux, точная команда, которую вам нужно запустить, может варьироваться от одного дистрибутива к другому. Вы можете посетить сайт Linux для получения дополнительной информации.
Наконец, вы можете временно изменить клиентские DNS-серверы. По умолчанию ваш интернет-провайдер автоматически назначает вам DNS-серверы. Но вы можете временно изменить их на общедоступные IP-адреса DNS.
Временное отключение CDN вашего сайта
Иногда проблема также может быть в вашей сети доставки контента (CDN). Если исходный сервер сайта недоступен, большинство сетей CDN попытаются показать всю веб-страницу из своего кеша.
Но большинство CDN не включают эту функцию по умолчанию, так как на большинстве сайтов сложно кэшировать динамические ресурсы (например, панель администратора WordPress).
Простой способ устранить эту проблему - временно отключить CDN. Например, если вы используете бесплатный плагин для связывания ресурсов вашего сайта с URL-адресами CDN, вы можете деактивировать плагин и выполнить перезагрузку сайта.
Если вы не можете получить доступ к панели администратора вашего сайта, вы можете отключить плагин через SFTP, переименовав имя папки плагина.
CDN, такие как Cloudflare или Sucuri, которые предоставляют полные прокси-сервисы, имеют дополнительные брандмауэры между своими пограничными серверами и вашим исходным сервером. Следовательно, вы можете чаще сталкиваться с ошибками HTTP 5xx при их использовании. Большинство из них кэшируют ошибки 5xx, возвращаемые вашим исходным сервером, поэтому их легко устранить.
Бесплатный план Cloudflare может выдавать ошибку 5xx. К сожалению, поскольку это полноценный прокси-сервис, быстро отключить его невозможно. Но прежде чем винить в этом Cloudflare, знайте, что Cloudflare показывает два варианта ошибки 504 Gateway Timeout.
504 Gateway Timeout в Cloudflare (вариант 1)
Cloudflare покажет вам настраиваемый экран ошибки 504 Gateway Timeout, когда исходный сервер вашего сайта отвечает стандартным ответом HTTP 504.
Здесь проблема заключается в вашем веб-сервере, а не в Cloudflare. Вы можете попробовать исправить это с помощью других решений, упомянутых ниже, или обратитесь в службу поддержки вашего хостинг-провайдера за технической помощью.
504 Gateway Timeout в Cloudflare (вариант 2)
Если Cloudflare вызывает ошибку 504 Gateway Timeout, на экране ошибки будет указано «cloudflare», которое в настоящее время является стандартным именем сервера для всех ресурсов Cloudflare.
Скорее всего, Cloudflare уже знает об этой проблеме и уже работает над ее исправлением. Вы можете подтвердить это, проверив веб-страницу состояния системы Cloudflare. Кроме того, вы можете связаться с поддержкой Cloudflare для более быстрого разрешения.
504 Gateway Timeout в Cloudflare из-за загрузок больших файлов
Размер файлов для загрузки на ваш сайт также может быть причиной для ошибки 504 Gateway Timeout. Cloudflare ограничивает размер загружаемого файла (для каждого запроса HTTP POST) - всего 100 МБ как для бесплатных, так и для профессиональных планов.
Проблемы с сервером
Проблемы с сервером - одна из наиболее частых причин возникновения ошибки 504 Gateway Timeout. Поскольку большинство сайтов размещены на веб-серверах Nginx или Apache, Nginx или Apache ожидают ответа от чего-то и истекает время ожидания.
Сайты с высоким трафиком и электронной коммерцией более подвержены ошибкам 504 из-за перегрузки сервера, поскольку они генерируют много некэшируемых запросов. Однако эта проблема может возникнуть на любом сайте, включая простые блоги. Многие хостинги попросят вас перейти на план более высокого уровня, чтобы решить проблему, что в большинстве случаев не требуется.
Перегруженный сервер - не единственная причина тайм-аута сервера. У ошибки 504 может быть много других причин:
Медленная серверная инфраструктура
На сервере, который вы используете для размещения своего сайта, может не хватать ресурсов для обработки нагрузки. Это похоже на игру в современную видеоигру с большим количеством графики на ПК десятилетней давности.
Сервер просто зависает, пытаясь обслужить веб-сайт. Единственное решение этой проблемы - перейти на сервер с лучшей инфраструктурой.
Требуется больше PHP-воркеров
PHP-воркеры используются для выполнения кода вашего сайта. Сайт электронной коммерции, который получает 50000 посетителей в месяц, требует гораздо больше ресурсов, чем простой блог с тем же объемом трафика. Если все PHP-воркеры сервера заняты, они создадут очередь.
Когда очередь становится слишком большой, сервер начинает игнорировать запросы, из-за чего сервер может выдать ошибку шлюза 504. Вы можете узнать у своего хостинг провайдера об увеличении количества PHP-воркеров. Это позволит вашему сайту выполнять больше запросов одновременно.
Проблемы с брандмауэром
В брандмауэре вашего сервера могут быть ошибки или неправильная конфигурация. Возможно, некоторые из его правил мешают серверу правильно устанавливать соединение. Чтобы узнать, виноват ли ваш брандмауэр, вы можете проверить журналы ошибок вашего сервера.
Проблемы с сетевым подключением
Проблемы с подключением между прокси-сервером и веб-сервером могут вызывать задержки при ответе на HTTP-запросы. Если вы используете балансировщик нагрузки, с ним также могут быть проблемы.
HTTP-таймауты
Тайм-ауты HTTP могут возникать, когда соединение между веб-сервером и клиентом остается открытым слишком долго. На сайтах WordPress это обычно происходит при запуске импорта WordPress. Один из способов решить эту проблему - переключиться на более быстрое подключение к Интернету.
Спам, боты или DDoS-атаки
Злоумышленники могут заставить ваш веб-сервер работать при повышенной нагрузке, отправив слишком много и (или) ресурсоемких запросов. Если ваш сайт столкнулся с ботами или подвергается DDoS-атаке, это может привести к перегрузке вашего сервера и появлению ошибок 504 Gateway Timeout для многих подлинных пользователей.
Вы можете посмотреть трафик своего сервера и аналитику, чтобы увидеть, можете ли вы обнаружить какие-либо подозрительные изменения в трафике сайта.
Начните расследование с просмотра основных IP-адресов клиентов. Это даст вам представление о том, кто и откуда генерирует максимальное количество запросов. Если ваш сервер внезапно использует огромную пропускную способность или привлекает много трафика, этот отчет будет очень кстати.
Затем вы можете проверить отчет об анализе кеша. Здесь вы можете увидеть, сколько запросов обходят или пропускают кеш или обслуживаются из кеша. По соображениям производительности и стабильности вы хотите кэшировать как можно больше запросов, но это не всегда возможно.
Например, сайты WooCommerce генерируют множество некэшируемых запросов для таких функций, как корзина для покупок и процесс оформления заказа.
Наконец, вы можете использовать плагины безопасности WordPress или другой CMS вашего сайта, чтобы повысить безопасность своего веб-сайта, обнаруживая и блокируя тревожный трафик (IP-адреса). Вы также можете попробовать в своем хостинге заблокировать определенные IP-адреса.
В зависимости от продолжительности и масштаба атаки это может быть бесконечный процесс занесения IP-адресов в черный список, поскольку многие злоумышленники меняют свои IP-адреса и прокси-адреса после блокировки.
Вы можете использовать специальные решения безопасности, такие как Cloudflare или Sucuri, для защиты своих сайтов от DDoS-атак и спам-ботов. Для получения дополнительной информации вы можете посетить сайты этих компаний.
Поврежденная база данных
Иногда ошибка 504 Gateway Timeout может быть связана с повреждением базы данных, особенно на сайтах WordPress. Обычно это происходит из-за поврежденных таблиц или файлов базы данных. Иногда это также может быть вызвано серьезной проблемой безопасности, например, взломом вашего сайта или базы данных.
Восстановление поврежденной базы данных зависит от проблемы. Различные плагины упрощают диагностику и устранение проблем с базой данных, если ваш сайт использует WordPress или другую CMS.
Проверьте плагины и темы своего сайта
В большинстве случаев сторонние плагины и темы не вызывают ошибки 504. Но есть небольшая вероятность, что они могут вызвать тайм-ауты сервера, обычно из-за постановки в очередь множества некэшированных запросов, сгенерированных плагином (темой). Поскольку это генерирует множество PHP-воркеров вашего сервера, это может вызвать ошибку 504.
Отличным примером этой проблемы является WooCommerce, плагин, устанавливаемый для добавления функциональности электронной коммерции на сайты WordPress.
Самый простой способ устранить эту проблему - отключить все плагины. Помните, что вы не потеряете никаких данных, если просто отключите плагин.
Если у вас есть доступ к панели управления администратора, вы можете перейти на экран «Плагины» , выбрать «Деактивировать» в меню массовых действий, отметить все плагины и нажать кнопку «Применить». Это отключит все ваши плагины.
Если вы не можете получить доступ к своей панели администратора, вы можете отключить плагины через SFTP. Просто переименуйте имя основной папки плагинов, чтобы отключить все плагины сразу.
После того, как вы отключили все плагины, проверьте, правильно ли загружается ваш сайт. Если он работает, вы должны активировать каждый плагин, тестируя сайт после включения каждого плагина.
Наконец, убедитесь, что ваши плагины, темы и ядро WordPress обновлены. Также убедитесь, что на вашем сервере работает рекомендованная версия PHP.
Если вы чувствуете, что это слишком сложно, вы всегда можете обратиться к службе поддержки хостинга за помощью. Хостинги как правило используют различные методы устранения неполадок, чтобы помочь клиентам определить, какой плагин, запрос или сценарий могут вызвать ошибку.
В наихудших сценариях, таких как неэффективный запрос или плохой код в плагине (теме), вы можете привлечь разработчика WordPress, чтобы исправить проблему.
Проверьте журналы ошибок
Просмотр журналов ошибок может быть очень полезен при устранении неполадок и отладке ошибок 504 на вашем сайте. Это может помочь вам быстро решить проблему на вашем сайте, особенно если она вызвана плагином на вашем сайте.
Если на вашем хостинге нет инструмента для ведения журнала, вы можете включить режим отладки WordPress, добавив следующий код в свой файл wp-config.php:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Константа WP_DEBUG включает или отключает режим отладки WordPress. У нее есть две необязательные сопутствующие константы, которые могут расширить ее возможности. Константа WP_DEBUG_LOG направляет все ошибки для сохранения в debug.log файл в /wp-content/ каталог. Если вы не видите этот файл, вы всегда можете его создать.
WP_DEBUG_DISPLAY управляет отображением отладки на странице HTML. Установка этого значения в false скроет все ошибки, но вы можете просмотреть ошибки позже, так как вы определили WP_DEBUG_LOG как true.
Наконец, вы можете проверить файлы журнала сервера. В зависимости от того, какой сервер вы используете для размещения своего сайта, они обычно находятся в следующих местах:
Apache: /var/log/apache2/error.log/
Nginx: /var/log/nginx/error.log/
Вы можете обратиться к документации Apache или Nginx, связанной с ведением журналов, для получения дополнительной информации.
Правильная настройка параметров Apache или Nginx
Вы можете отредактировать файлы конфигурации сервера, чтобы увеличить ограничения ресурсов для определенных директив. Это может помочь вам устранить ошибку 504 Gateway Timeout.
Для веб-серверов Apache
Сначала добавьте следующий код в свой httpd.conf:
TimeOut 600
Этот параметр определяет, как долго сервер будет ждать запросов, прежде чем пометить их как проблему тайм-аута сети. Его значение по умолчанию - 60 секунд (версия Apache 2.4).
Вы можете добавить эту директиву только в файл httpd.conf, но не в файл .htaccess. Поскольку большинство провайдеров виртуального хостинга не позволяют вам изменять файл httpd.conf, вместо этого вы можете попробовать увеличить значение директивы LimitRequestBody в файле .htaccess.
Затем добавьте в файл php.ini следующую строку:
max_execution_time 300
Значение директивы max_execution_time PHP по умолчанию - 30 секунд. Ее увеличение позволит скриптам PHP вашего сайта работать дольше.
Для веб-серверов Nginx
Если вы запускаете свои сайты на Nginx + FastCGI Process Manager (PHP-FPM) или используете Nginx в качестве обратного прокси для Apache, вы можете настроить параметры сервера, чтобы предотвратить ошибки 504 Gateway Timeout.
Ошибка 504 Gateway Timeout на Nginx + FastCGI (PHP-FPM)
Во-первых, вы должны отредактировать файл конфигурации пула PHP-FPM. Вы можете найти его /etc/php7.4/fpm/pool.d/www.conf на своем сервере Nginx (точный путь может отличаться в зависимости от версии PHP). В качестве альтернативы вы можете запустить следующую команду в своем терминале, чтобы отредактировать файл конфигурации пула PHP-FPM:
sudo nano /etc/php/7.2/fpm/pool.d/www.conf
Затем установите следующую директиву:
request_terminate_timeout = 300
После этого вы должны отредактировать файл php.ini. Вы можете найти его по адресу /etc/php.ini. Откройте файл и добавьте (измените) значение max_execution_time директивы на 300 секунд.
max_execution_time = 300
Наконец, добавьте следующий код в ваш файл nginx.conf:
location ~ .php$ {
...
fastcgi_read_timeout 300;
}
Перезагрузите Nginx и PHP-FPM, чтобы изменения вступили в силу.
sudo service nginx reload
sudo service php7.4-fpm reload
Точный код для перезагрузки PHP-FPM будет зависеть от версии PHP, установленной на вашем сервере. Проверьте свой сайт, чтобы убедиться, что проблема устранена.
Ошибка 504 Gateway Timeout на прокси-сервере Nginx
Если вы используете Nginx в качестве обратного прокси-сервера для Apache, вы можете сделать его более гибким в отношении тайм-аутов сервера, добавив следующие директивы в свой файл nginx.conf:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
Не забудьте перезагрузить Nginx после внесения изменений.
sudo service nginx reload
Компания Mainton - разработка и тестирование программного обеспечения под заказ, SEO и реклама в интернете с 2004 года.