apache - Apache 线程在查询后保持状态读取
问题描述
我的配置是 aws elb 后面的 apache 和 tomcat。Apache 配置为没有保持活动状态,并且由于每个查询都非常占用 CPU 资源,因此将最大客户端设置为较低的数字。我将使用查询对机器进行负载测试。然后可用请求的数量变为零,这可以curl -s localhost/server-status?auto
从不立即响应中看出。当我停止负载测试时,我可以看到记分板curl -s localhost/server-status?auto
仍然充满了 R,即使从 tomcat 日志中很明显没有发生任何事情。有谁知道可能有什么可能的原因?
解决方案
如果您的 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 连接需要一点成本)。
推荐阅读
- mysql - 如何加入 Apex oracle
- android - 创建动态列表的动态列表的最佳实践?
- android - 如何在 Android Studio 中设置兼容库
- python - 编译 Cython 扩展后 Python traceback.format_tb 不能完全工作
- python - Python:嵌套类与继承
- php - Symfony 4 - 使用数组创建表单
- javascript - Nuxt.js:如何在 nuxt 构建后调试服务器端(记录一些信息)
- android - OkHttp 和 Retrofit 无限 Post 请求在后台
- python-3.x - 检查某些文本的 message.content
- python - python转php接口