我在工作中运行一个 Web 服务器,在高峰时段间歇性地出现高延迟。根据 Firebug 的说法,高延迟总是发生在第一个请求(请求页面)中。第一个响应返回后,其他所有内容都会快速加载。我在与 Web 服务器相同的网络上遇到此问题。在高峰时段,我们有大约 1200 个并发连接。
我对 MaxClients 指令进行了大量研究,并使用“经验法则”来确定要使用的值 (400)。每个 httpd 进程平均约为 25mb。我们为组织提供了 2gig 连接,此 Web 服务器通过该连接提供服务。此外,Web 服务器是一个运行 RHEL 5.6 和 apache 的 VM,具有 4 个专用核心和 12GB RAM。
在高峰时段,MaxClients 数量为 400,我访问 Web 服务器时经常会遇到超时问题。当我将其设置为 1000 这样的高数字时,似乎可以缓解超时问题,但我仍然会间歇性地收到高延迟的初始响应。有人能告诉我该怎么做才能解决这个问题吗?
Timeout 10
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule prefork.c>
StartServers 20
MinSpareServers 5
MaxSpareServers 20
ServerLimit 400
MaxClients 400
MaxRequestsPerChild 4000
</IfModule>
答案1
它可能是许多事情,但我会查看交换率和磁盘 I/O,看看是否需要交换页面,或者从磁盘读取一堆内容来满足初始请求,然后在后续请求中使用 RAM 提供所有内容。