我想知道错误 504 网关超时是否总是来自负载平衡器,或者它也可能源自 Apache 及其正在运行的 PHP 代码?
谢谢
答案1
这通常发生在负载均衡器等待 apache 的响应,而 apache 没有在负载均衡器的超时期限内给出响应时。因此它返回 504 网关超时。关于导致 apache 没有响应的原因只有您自己才能说清楚,因为您没有提供太多有关 apache 所提供服务的背景信息。查看 apache 日志以了解更多详细信息。通常是访问日志和错误日志。增加负载均衡器的超时值,看看是否有帮助。在 apache 上进行集群总是好的,这样您就不会因为 apache 实例死亡而得到 504。我认为 mod_proxy 允许您实现软件集群。我不确定在 apache 网站上查看。
答案2
通常是由于 Apache(mod_php)或 PHP(FastCGI)关闭或繁忙而导致的平衡。
答案3
当然可以来自 php。如果 php 脚本处于某种循环中并且不会“吐出”内容连接最终将超时,并且平衡器将报告网关超时。
那个“循环”不一定需要是循环,它可以等待连接某些服务来从 mysql/memcache 等读取数据...