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
您设置了Timeout
为15
?为什么?
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 上。