我在 Centos 7 服务器上运行 Apache 2.4.17 (prefork)。服务器规格非常好:2 x Xeon E5-2697 v3 @ 2.60GHz、512GB RAM 和 8 个 SSD(RAID 10)。
该 Apache 服务器用于运行 PHP 软件。
正常负载在 8 到 15 之间,但由于服务器规格,响应速度非常快。此外,每秒的请求数通常低于 300。
我注意到有时 Apache 会超时即使对于本地请求。当每秒请求数高于 400 和/或负载为 20+ 时,就会发生这种情况。
如果我重试该请求,它可以正常工作。
以下是相关配置:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 2
<IfModule mpm_prefork_module>
ServerLimit 2000
StartServers 30
MinSpareServers 20
MaxSpareServers 80
MaxRequestWorkers 2000
MaxConnectionsPerChild 50000
</IfModule>
一些说明:
- Apache 错误日志根本没有显示任何错误。
- 即使发生这种情况,服务器也会响应。我可以使用 SSH 访问它,其他服务也运行正常。
- 我安装了 munin。当问题发生时,至少 50% 的 RAM 是空闲的,CPU 使用率约为 70%,I/O 使用率非常低。
我如何才能获得有关此问题的更多信息?什么可能导致此类超时?
答案1
经过大量测试、配置更改等之后,我仍无法修复 Apache 2.4 的这个问题。
我决定使用相同的配置尝试一下 Apache 2.2。我只删除了一些 Apache 2.4 特有的指令。
它确实有效。相同的服务器、配置、应用程序和负载。使用 Apache 2.2,我不再遇到超时问题。