Ошибка 504 Gateway Time-out при попытке доступа к определенному интернет-ресурсу считается одной из самых распространенных. В данном случае, правда, от пользователя, с чьего компьютера производится запрос к странице, не зависит практически ничего (возможно, что версию браузера бывает необходимо обновить или вовсе перейти на использование другого обозревателя). А вот владельцы серверов и сайтов, расположенных на определенных хостингах, могут сталкиваться с проблемой ее появления достаточно часто. Далее попробуем кратко рассмотреть, почему возникает такой сбой? и дадим некоторые практические советы по возможному устранению повторяющейся ошибки.
Ошибка 504 Gateway Time-out: перевод и общее понимание
Чтобы в полной мере разобраться, о чем, собственно, идет речь, для начала необходимо четко понять природу этого сбоя. Если предложить читателям простейший трактовку ошибки 504 Gateway Time-out, перевод примерно может означать что-то вроде истечения времени ожидания прохождения через шлюз. Но это относится только к тем случаям, когда при доступе к запрашиваемой странице превышается время ожидания ответа ресурса. То есть запрос с удаленного компьютера к ресурсу проходит без проблем, а вот обработать запрос и отправить обратный htttp-ответ за отведенное время сервер не успевает.
Пояснить это можно на простом примере, когда в качестве бэкэнда установлен сервер Apache, а роль фронтэнда исполняет nginx. 504 Gateway Time-out при ответе в такой паре появляется чаще всего. Схема работает примерно следующим способом.
Клиентский запрос к серверу отправляется не напрямую к Apache, а сначала проходит через nginx (что-то вроде распределителя). Если сервер Apache обработать запрос и отправить ответ за отведенное ему время оказывается не в состоянии, nginx при отсутствии ответа генерирует данную ошибку. Вообще, стоит сказать, что практически у всех версий сервера Apache есть одна довольно неприятная особенность, состоящая в том, что они в действительности не обладают достаточно высокой скоростью обработки запросов. Кроме того, на их работе может сказываться еще и огромное количество активных в данный момент времени сторонних процессов и исполняемых скриптов, работа которых тоже может даваться сбои.
Ошибка 504 Gateway Time-out: устранение сбоя аппаратным методом на серверах
Теперь перейдем от теории к практике и попытаемся, насколько это возможно, попробовать устранить этот неприятный сбой.
Обычно специалисты владельцам серверов в самой простой ситуации рекомендуют использовать простейшую методику устранения ошибки 504 Gateway Time-out, которая подразумевает увеличение мощности оборудования с целью повышения производительности компьютеров. Можно попробовать увеличить на сервере объем оперативной памяти, установить более новые процессоры и т. д.
Исправление ошибки простейшим программным методом на сайтах
Что же касается самих страниц и хостингов, на которых они могут размещаться, при использовании связки Apache + nginx, в качестве первейшего средства можно попробовать увеличить количество процессов httpd непосредственно на сервере Apache. Кроме того, можно применить и более разумное решение. Как уже было сказано выше, времени на обработку запроса серверу не хватает, а распределитель вместо ответа отправляет ошибку 504 Gateway Time-out. PHP-параметр max_execution_time нужно изменить, задав большее значение временного промежутка (например, в районе 500-700 сек.).
Кроме того, настоятельно рекомендуется проверить все активные сторонние процессы и отключить те, которые просто не нужны. Особое внимание необходимо обратить на SQL-запросы и исполняемые скрипты.
Проблемы с исполнением скриптов
А вот со скриптами дело обстоит не так просто.
Ошибки по их вине обычно происходят по причине того, что сами скрипты могут обращаться к данным на сайте или внешним базам данных, которые в определенный момент времени недоступны, и получить ответ, опять же, не успевают. Нередко причиной появления сбоя 504 Gateway Time-out может стать и попытка подключения к прокси-серверу, который не может обработать входящий запрос и отправить ответ. Наконец, не стоит забывать, что достаточно часто доступ к данным может блокироваться сторонними процессами (например, погодными апплетами или виджетами текущих курсов валют и т. д.). Соответственно, необходимо оптимизировать и их выполнение.
Ошибка при использовании системы управления Joomla
Наконец, ошибка 504 Gateway Time-out в 504 в Joomla чаще всего появляется банально из-за того, что сама система управления постоянно обновляется, что далеко не самым лучшим образом сказывается на ее функционировании. Так, например, многими специалистами отмечается, что «коробочную» модификацию Joomla 3 необходимо оптимизировать путем установки дополнительных модулей и плагинов. Но апдейт самой системы до версии 3.6.5 может провоцировать появление конфликтов с кодами инсталлированных устаревших дополнений, что приводит к замедлению работы сервера и появлению описываемого сбоя. Соответственно, все дополнения тоже нужно обновлять (хотя уследить за автоматическим постоянным обновлением самой системы Joomla бывает весьма проблематично).
Как вариант, можете сделать для себя копию всего сайта, создав в корне новую директорию и поместив туда копии всех файлов. Затем создайте копию БД и пропишите ее конфигурации (Configuration.php).
Теперь перейдите в административный раздел Joomla, после чего в разделе плагинов последовательно отключайте дополнения, начиная с тех, которые были установлены последними. Вполне возможно, какой-то из этих плагинов и вызывает появление такой проблемы. Например, некоторые отмечают, что очень часто ошибка выскакивает по вине дополнения JSitemap Pingomatic.
Дополнительный совет владельцам сайтов
Если же вы являетесь всего лишь владельцем сайта и размещаете его на определенном хостинге, но ничего из предложенного выше устранить проблему не позволяет, вполне возможно, настало время хорошенько задуматься над сменой хостинг-провайдера, который не в состоянии обеспечить вам нормальную техническую поддержку.