我们有一个由 3 台服务器组成的集群,所有 3 台服务器上都运行着 weblogic 来托管网站。在 weblogic 之上,使用 Apache 作为负载均衡器。
去年我将 Apache http 服务器从 2.4.9 升级到了 2.4.29。升级前一切运行正常,但升级后,每 2-4 周 Apache 就会挂起一次。网站无法访问,检查服务器时我们没有看到任何错误,事实上,当 Apache 挂起时,它也会停止记录。
我们监控发现,在问题发生之前,没有发现异常的内存使用情况,没有对网站的可疑请求类型,也没有发现任何可疑的进程在运行。
在网上搜索后,我发现问题可能与 MPM 配置有关。Apache 使用的是事件 MPM,但我发现事件 MPM 配置未在 apache 配置中声明,我认为在升级过程中默认配置已被旧配置替换。
因此,我们修改了 MPM 配置以使用以下事件 mpm 配置,并且此更改有效。我们在接下来的 6 个月内没有遇到此问题。
启动服务器 4 最小备用线程 256 最大备用线程 512 每个子线程 64 最大请求工作线程 2048 每个子连接数 0
我们认为它已经修复,但是现在 6 个月后 Apache 再次挂起,唯一的症状是,在接下来的 1 个小时内,closed_wait 连接数从 20 增加到 550,网站无法访问,apache 停止记录其 ssl 和错误日志,我们在不同的运行进程数据、内存使用中没有看到任何异常行为,在问题发生之前也没有看到任何可疑请求。