504 Gateway Timeout (time out) nginx.

Подробности статьи
Ссылка: https://kb.hothat.ru/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=177
Cтатья №: 177
Создано: 30.11.2012 04:16

Ответ 504 Gateway Timeout - в переводе с английского языка на русский язык, означает время ответа шлюза вышло, шлюз не отвечает.

Ошибка зачастую возникает на серверах с установленным   nginx в качестве фронтенда и Apache в качестве бэкенда. Пользователи сервера чаще всего думают, что суть проблемы заключается в nginx, но на самом деле это не так.

О причинах появления ошибки.

Одной из основных причин является возрастание нагрузки на сайт,  при которой количество запросов к серверу apache возрастает  до критического значения и новые запросы стают в очередь.
 В связи с этим время на поступление к обработке запросов (которые попали в очередь)   больше, чем установлено в конфигурации сервера. Запрос не успевает попасть на  обработку и соединение сбрасывается.

Для решения проблемы:

1. Увеличить ресурс сервера, оперативную память, процессор. В большинстве случаев решает проблему, но часто необходимо предпринимать с решением 3.
2. Увеличить количество одновременных процессов apache и лимит времени в конфигурации nginx. Не рекомендовано предпринимать без 1 и 3 пунктов, возможны еще большие проблемы.
3. Провести оптимизацию работы скриптов. Возможно, как самостоятельное решение.
4. В конфигурации nginx увеличить время ожидания исполнения скрипта:

proxy_read_timeout 120;
proxy_connect_timeout 120;

Существует еще одна распространенная причина.   Скрипт требует значительно больше времени на его обработку, чем отведено сервером.

К примеру производит импорт большого количества данных, делает удаленные подключения. Причин может быть много.

Для решения проблемы:

Можно увеличить значение PHP max_execution_time  или оптимизировать работу скрипта.

Прошу заметить, что сильное увеличение max_execution_time может привести к возникновению первой причины появления ошибки 504 которая описана выше.

Вышеуказанные решения не являются единственными, а только часто используемыми.
К каждой проблеме необходим индивидуальный подход.