Ошибка 504 Gateway Timeout является одной из самых популярный ошибок в интернет. Возникает сама по себе или совместно с 502й ошибкой. Появляется в момент повышенной нагрузки на сервере, вызванной большим количеством запросов на сайт или медленной работой скриптов.
При такой ситуации есть несколько способов решения:
Все пять способов решения приводят к дополнительным расходам на переработку софта программистами, работу опытного системного администратора, покупку или модернизацию сервера.
В связке Nginx + Apache(Fast-cgi) бэкенд происходит так:
От посетителя сайта приходит запрос в Nginx, который самостоятельно отдает статику (картинки, java скрипты, css и другие файлы).
Обработка же php запроса уходит в бэкенд (Apache или Fast-cgi) и в этот момент php производит свои вычисления - если это происходит дольше таймаута, установленного в nginx, он выдаст посетителю сайта ошибку 504.
В nginx за это отвечают следующие параметры:
Часто встречается эта ошибка в случае, если у сайта есть «админка» или какие-то скрипты, которые могут долго выполняться, наполняя базу данными. Такие запросы выполняются очень долго и, как результат, получение 504 ошибки, при этом, если посмотреть процессы на сервере видно, что они продолжают обрабатываться и в итоге выполняют все что нужно, но без вывода информации в браузере.
Эту проблему можно решить так: