访问日志中 408 错误代码过多

访问日志中 408 错误代码过多

Apache 访问日志显示太多 408 错误代码,每天近 400 个。

xxxx - - [25/4 月/2012:22:43:06 -0600] "-" 408 0 "-" "-"

大约有 400 个来自不同 IP 地址的此类请求。

我不知道这是产生太多子进程的原因吗,有时候会产生接近 624 个子进程,而且只有少数用户。我怎样才能找出确切的原因。我们正在使用 php 和 mysql(connections-800)

已启用:tcp_tw_reuse

syn_retries :2

syn_ack_retires :3

fin-time_out:30

Apache 超时:15

保持活动状态

保持连接超时 7

最大备用:40

最小备用:25

每个孩子请求数:4000

最大客户端数量:800

答案1

您设置了Timeout15?为什么?

HTTP 408 表示“请求超时”

基本上,它发生在客户端connect()在超时之前没有发送任何数据时。

10.4.9 408 请求超时

客户端未在服务器准备等待的时间内发出请求。客户端可以在稍后的任何时间重复该请求而不做任何修改。

RFC2616 §10

将超时时间改回默认值 300,并停止尝试过早优化系统。

答案2

正如上面的人所说,这是请求超时。

您可能正遭受 slowloris 攻击,如果是这种情况,您很高兴看到日志中的所有 408,这意味着您的服务器正在放弃攻击者,是的,请检查您的超时设置,检查您是否有 mod_reqtimeout。

如果您的服务器没有丢弃它们,那么它很可能已关闭/无法访问。

也可以看看我如何检测 Slowloris?

答案3

检查日志中所有 408 状态的 IP 和日期时间,检查来自同一 IP 的连续请求,并检查它们的请求时间,如果时间差异较小,那么恭喜您已启用 mod_security 并正确配置。有关更多信息,请查看此处(https://www.modsecurity.org/) 在 mod_security 上。

相关内容