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 є одна досить неприємна особливість, яка полягає в тому, що вони насправді не володіють достатньо високою швидкістю обробки запитів. Крім того, на їх роботі може позначатися ще й величезна кількість активних в даний момент часу сторонніх процесів і виконуваних сценаріїв, робота яких теж може давати збої.

Помилка 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.

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

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