在达到 MaxClients 时从 apache2 中找出服务器状态

在达到 MaxClients 时从 apache2 中找出服务器状态

我正在尝试调试为什么我们的应用服务器的所有 Apache 子进程都锁定并停止提供请求。这些是 mod_perl 应用服务器。

问题是,要找出当前的请求是什么,您需要发出 http 请求来找出服务器状态(使用 mod_status)。

答案1

您可以挂接到 mod_perl 生命周期的早期阶段之一,并在该点转储请求。在末尾添加一个钩子以将特定请求标记为已完成(可能添加响应标头),现在您知道当前正在运行什么。

答案2

这不是您正在寻找的,但您可以重新启动 Apache,每隔 (N 秒/分钟) 获取一次脚本状态,直到它崩溃,然后查看最新的状态?

答案3

我从那时起就发现一个可能的途径就是停止到这个网站的传入流量(本地盒子上的 iptables 规则就足够简单了),然后获取 apache 子进程的 pid 列表并向其中几个子进程发送 HUP,然后执行本地主机服务器状态(因为你现在有几个释放的子进程来处理请求)。

相关内容