504 Gateway time-out: що це за помилка і як від неї позбутися?

Помилка 504 Gateway Time-out при спробі доступу до певного інтернет-ресурсу вважається однією з найпоширеніших. В даному випадку, правда, від користувача, з чийого комп`ютера проводиться запит до сторінки, не залежить практично нічого (можливо, що версію браузера буває необхідно оновити або зовсім перейти на використання іншого оглядача). А ось власники серверів і сайтів, розташованих на певних хостингах, можуть стикатися з проблемою її появи досить часто. Далі спробуємо коротко розглянути, чому виникає такий збій? і дамо деякі практичні поради щодо можливого усунення повторюваної помилки.

Помилка 504 Gateway Time-out: переклад та загальне розуміння

Щоб повною мірою розібратися, про що, власне, йдеться, для початку необхідно чітко зрозуміти природу цього збою. Якщо запропонувати читачам найпростіший трактування помилки 504 Gateway Time-out, переклад приблизно може означати щось на зразок закінчення часу очікування проходження через шлюз. Але це відноситься тільки до тих випадків, коли при доступі до запитуваної сторінці перевищується час очікування відповіді ресурсу. Тобто запит з віддаленого комп`ютера до ресурсу проходить без проблем, а ось обробити запит і відправити зворотний htttp-відповідь за відведений час сервер не встигає.

Пояснити це можна на простому прикладі, коли в якості бекенда встановлений сервер Apache, а роль фронтенду виконує nginx. 504 Gateway Time-out при відповіді в такій парі з`являється найчастіше. Схема працює приблизно наступним способом.

Найпростіший принцип роботи пари Apache + nginx

Клієнтський запит до сервера надсилається не безпосередньо до 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 3

Тепер перейдіть в адміністративний розділ Joomla, після чого в розділі плагінів послідовно відключайте Доповнення, починаючи з тих, які були встановлені останніми. Цілком можливо, якийсь із цих плагінів і викликає появу такої проблеми. Наприклад, деякі відзначають, що дуже часто помилка вискакує з вини Доповнення JSitemap Pingomatic.

Додаткова порада власникам сайтів

Якщо ж ви є всього лише власником сайту і розміщуєте його на певному хостингу, але нічого із запропонованого вище проблему не дозволяє, цілком можливо, настав час задуматися над зміною хостинг-провайдера, який не в змозі забезпечити нормальну технічну підтримку.

Статті на тему