即使MaxClients已满,我可以获得本地主机/服务器状态吗?

我正在build立监测系统,将检测当前正在处理多less(空闲)请求。 我用来检测这个方法是通过连接到http:// localhost / server-status。

问题是,如果Apache不能再服务更多的新连接(例如: MaxClients达到顶端),那么我怎么能够检测Apache统计呢? Apache是​​否有足够的智能来忽略来自本地主机的连接的MaxClientsconfiguration?

任何帮助表示赞赏。

我相信答案是否定的,有两个原因(第三个是毛茸茸的):

  1. 假设/server-status/请求不受MaxClients (但增加了客户端数量)。 那么,如果Apache的请求被DoS攻击,那么合法的请求就无法被服务(因为他们可以通过MaxClients ,所以真正的响应不会有机会)

  2. Apache可能会根据开放连接的数量来决定客户端的数量(一个到:80连接一次只能发送一个请求,但是KeepAlive允许我们重用它,所以打开一个TCP连接基本上是一个客户)。 这将在标题被读取之前被检查(如果有空间的话,它将委托要处理的请求,如果没有的话,它将快速失败)。

  3. 每当我连接超载, service httpd fullstatus真的很慢或根本不工作:-)

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