我们有一个运行 Apache 2.4 的遗留服务器集群,这些服务器运行我们的应用程序,位于 ELB 后面。此 ELB 有两个侦听器,一个 HTTP 和一个 HTTPS,它们在 ELB 处终止,并向其后面的实例发送常规 HTTP 流量。此 ELB 还关闭了预打开(它导致繁忙的工作人员堆积)。在正常负载下,每个实例有 1-3 个忙碌的工作人员。
我们有一个新的服务器集群,我们正试图迁移到一个新的 ELB 后面。此迁移的目的是允许 SNI – 为数千个域提供 TLS 流量。因此,此集群使用已在 ELB 级别启用的 mod_proxy_protocol。出于测试目的,我们一直在 DNS(Route 53)级别对流量进行加权,以将 30% 的流量发送到新的负载均衡器。即使在这么小的负载下,我们也会看到 5 到 10 个忙碌的工作人员,并且随着流量的增长而增长。
作为进一步的测试,我们采用了其中一个新实例,禁用了 proxy_protocol,并将其从新 ELB 移动到旧 ELB,工作人员数量下降到平均水平,即 1-3 个忙碌的工作人员。这似乎表明 ELB(HTTP 和 TCP 处理之间的差异?)或 mod_proxy_protocol 存在问题。
我的问题:为什么在使用代理协议和新的 ELB 时,我们有两倍繁忙的 apache 工作人员?我认为由于 TCP 侦听器是愚蠢的并且不对流量进行任何处理,因此它们会更快,因此比主动“修改”通过它们的流量的 HTTP 侦听器消耗更少的工作时间。
感谢任何帮助我们诊断此问题的指导。