小编Leo*_*eon的帖子

如何调试apache超时?

我使用prefork. Apache 每天收到大约 100k-200k 的请求,其中大约 100-200 个达到超时限制(所以大约千分之一),几乎所有其他请求都远低于超时。

我该怎么做才能找出发生这种情况的原因?或者所有请求的一些小部分超时是否正常?

这是我到目前为止所做的:

请求响应时间

可以看出,在超时限制和更合理的请求之间的请求很少。目前超时限制设置为 50 秒,之前设置为 300 并且情况仍然相同,有一些超时,然后与其他请求存在巨大差距。

所有超时的AJAX请求都是请求,但绝大多数都是请求,所以这可能更多是巧合。Apache 返回码为200,但显然已达到超时限制。它们来自各种不同的 IP。

我查看了超时的请求,它们没有什么特别之处,如果我执行相同的请求,它们会在不到一秒钟的时间内完成。

我试图查看不同的资源,看看我是否能找到原因,但没有运气。总是有足够的空闲内存(最低大约 3GB 空闲),负载有时高达 1.4,CPU 利用率高达 40%,但许多超时发生在负载和 CPU 利用率低时。磁盘写入/读取在白天几乎保持不变。MySQL 慢查询日志中没有条目(设置为记录 1 秒以上的任何内容),无请求使用那么多数据库写入/读取。

请求响应时间与系统负载/cpu

蓝色是 CPU 利用率,峰值为 40%,栗色是负载,峰值为 1.4。所以我们可以看到,即使 CPU 利用率/负载较低,也会出现超时(十秒峰值与 CPU 利用率很好地对应,但这是另一个问题,我更有希望找出可能导致这些问题的原因)。

Apache 错误日志中没有错误,我还没有看到它达到超过 200 个活动的 Apache 进程。

服务器设置:

Timeout 50 
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2

<IfModule mpm_prefork_module>
    ServerLimit     350
    StartServers        20
    MinSpareServers     75
    MaxSpareServers     150
    MaxClients          320
    MaxRequestsPerChild 5000
</IfModule>
Run Code Online (Sandbox Code Playgroud)

更新:

我更新到 Ubuntu 12.04.1,以防万一,没有变化。我添加了 mod_reqtimeout 设置: …

timeout apache-2.2

16
推荐指数
1
解决办法
3万
查看次数

标签 统计

apache-2.2 ×1

timeout ×1