我的配置是 aws elb 后面的 apache 和 tomcat。Apache 配置为没有保持活动状态,并且由于每个查询都非常占用 CPU 资源,因此将最大客户端设置为较低的数字。我将使用查询对机器进行负载测试。然后可用请求的数量变为零,这可以curl -s localhost/server-status?auto
从不立即响应中看出。当我停止负载测试时,我可以看到记分板curl -s localhost/server-status?auto
仍然充满了 R,即使从 tomcat 日志中很明显没有发生任何事情。有谁知道可能有什么可能的原因?
问问题
79 次
1 回答
0
如果您的 apache 在状态中显示“R”,则表示存在从 ELB 到 apache 的开放 TCP 连接(只是一个开放的 TCP 连接,尚未发送数据)。
没有关于此主题的官方完整文档(如何优化预打开连接的数量),但亚马逊文档状态(在此页面:https ://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/ how-elastic-load-balancing-works.html):
Classic Load Balancer 使用预先打开的连接,但 Application Load Balancer 不使用。
所以,答案是:它是来自亚马逊的优化(打开 TCP 连接需要一点成本)。
于 2019-02-08T20:23:50.020 回答