Помилка 504 Gateway Timeout (час очікування) Nginx. Як виправити
У цій статті описані причини виникнення помилки 504 Gateway Timeout (час очікування).
Часто помилку можна бачити на серверах, де встановлений Nginx в якості фронтенда і Apache в якості бекенда. І багато хто думає, що проблема в Nginx. Це не так.
504 Gateway Timeout - означає, що клієнтський запит Nginx передав апачів, а апач не зміг у встановлений ліміт часу повернути HTTP-відповідь. Трохи докладніше про взаємини nginx'а і апача в статті про 502 Bad Gateway.
Чому Apache не зміг відповісти?
Швидше за все справа в зрослої навантаженні на сайт, при якій Apache не встигає віддавати HTTP-відповіді, і нові запити стають в чергу. Клієнти «висять» у черзі, але за прийнятний час їх так і не встигають обслужити, тому з'єднання скидаються.
Щоб вирішити проблему, можна додати ресурсів серверу, зокрема оперативної пам'яті, і збільшити кількість процесів HTTPD (Apache). Інший варіант - оптимізувати роботу скриптів сайту, щоб вони виконувалися швидше. Якщо ви на звичайному віртуальному хостингу, то без зусиль адміністрації ситуація не покращиться. Якщо проблема не вирішується, треба шукати іншого провайдера.
Інша можлива причина виникнення помилки 504 - виконуваний скрипт не вкладається у відведений ліміт часу. Це буває, коли скрипт звертається до інших сайтів, або просто виконує важку операцію, наприклад, будує пошуковий індекс.
Варіанти рішення: збільшити значення параметра PHP max_execution_time або полегшити скрипт.
Критичні зауваження до статті вітаються.
|