即使 MaxClients 已满,我还能获取 localhost/server-status 吗?

即使 MaxClients 已满,我还能获取 localhost/server-status 吗?

我正在构建监控系统,用于检测当前正在处理多少(空闲)请求。我用来检测这一点的方法是连接到 http://本地主机您可以使用 /server-status 来配置服务器状态。

问题是,如果 Apache 无法再提供任何新连接(例如:MaxClients已到达顶部),那么我如何检测 Apache 统计信息?Apache 是否可能足够智能,可以忽略MaxClients来自本地主机的连接配置?

任何帮助都将受到赞赏。

答案1

我认为答案是否定的,原因有二(还有第三种不太明确的原因):

  1. 假设对 的请求/server-status/不受 的影响MaxClients(但增加了客户端数量)。那么,使用请求对 Apache 进行 DoS 就变得太容易了,因此合法的请求无法得到服务(而且由于它们可以远远超过MaxClients,真正的请求根本不可能得到响应)

  2. Apache 可能会根据打开的连接数(一个连接:80一次只能发送一个请求,但KeepAlive允许我们重复使用它,因此打开一个 TCP 连接本质上是一个客户端)来确定客户端数量。这将在读取标头之前进行检查(如果有空间,它将委托处理请求。如果没有空间,它将快速失败)。

  3. 每当我的连接数过多时,service httpd fullstatus工作就会变得很慢或者根本不工作:-)

答案2

您可能需要编写一个 apache 模块(或修改 mod_status),以便使用其他接口与 apache 服务器通信。您可能希望使用 posix 信号和共享内存或文件来请求和获取统计数据。

相关内容