我正在构建监控系统,用于检测当前正在处理多少(空闲)请求。我用来检测这一点的方法是连接到 http://本地主机您可以使用 /server-status 来配置服务器状态。
问题是,如果 Apache 无法再提供任何新连接(例如:MaxClients
已到达顶部),那么我如何检测 Apache 统计信息?Apache 是否可能足够智能,可以忽略MaxClients
来自本地主机的连接配置?
任何帮助都将受到赞赏。
答案1
我认为答案是否定的,原因有二(还有第三种不太明确的原因):
假设对 的请求
/server-status/
不受 的影响MaxClients
(但增加了客户端数量)。那么,使用请求对 Apache 进行 DoS 就变得太容易了,因此合法的请求无法得到服务(而且由于它们可以远远超过MaxClients
,真正的请求根本不可能得到响应)Apache 可能会根据打开的连接数(一个连接
:80
一次只能发送一个请求,但KeepAlive
允许我们重复使用它,因此打开一个 TCP 连接本质上是一个客户端)来确定客户端数量。这将在读取标头之前进行检查(如果有空间,它将委托处理请求。如果没有空间,它将快速失败)。每当我的连接数过多时,
service httpd fullstatus
工作就会变得很慢或者根本不工作:-)
答案2
您可能需要编写一个 apache 模块(或修改 mod_status),以便使用其他接口与 apache 服务器通信。您可能希望使用 posix 信号和共享内存或文件来请求和获取统计数据。