Я хотел бы знать, всегда ли ошибка 504 Gateway timeout исходит от балансировщика нагрузки или она также может исходить от Apache и PHP-кода, который он выполняет?
Спасибо
Обычно это происходит, когда балансировщик нагрузки ожидает ответа от apache, а apache не дает ответа в течение периода ожидания балансировщика нагрузки. Таким образом, он возвращает таймаут шлюза 504. О том, что заставляет apache не отвечать, можете сказать только вы, поскольку вы не предоставили много справочной информации о том, что обслуживает apache. Посмотрите журналы apache, чтобы узнать больше. обычно обращаются к журналам и журналам ошибок. Увеличьте значение тайм-аута loadbalancer, чтобы узнать, помогает ли это. Всегда хорошо иметь кластеризацию на apache, чтобы вы не получили 504 из-за мертвого экземпляра apache. Я думаю, что mod_proxy позволяет добиться программной кластеризации. Я не уверен, что заглянул на сайт Apache.
Обычно из-за балансировки, потому что Apache (mod_php) или PHP (FastCGI) не работает или занят.
Конечно, это может быть с php. Если php-скрипт находится в каком-то цикле и не «выплевывает», соединение с контентом в конечном итоге истечет, и балансировщик сообщит о тайм-ауте шлюза.
Этот «цикл» не обязательно должен быть циклом, он может ожидать подключения к какой-либо службе, чтобы читать данные, например, mysql / memcache или что-то в этом роде ...