Apache访问日志显示了太多的408错误代码,每天近400个。
xxxx – – [25 / Apr / 2012:22:43:06 -0600]“ – ”408 0“ – ”“ – ”
这些来自不同IP地址的请求大约有400个。
我不知道这是产生太多孩子的原因,有时它接近624个孩子,也有less数用户。我怎样才能找出确切的原因。我们正在使用PHP和MySQL(连接 – 800)
启用:tcp_tw_reuse
syn_retries:2
syn_ack_retires:3
鳍TIME_OUT:30
Apache的超时时间:15
保持活跃
keepalive timout 7
max_spare:40
min_spare:25
requestperchild:4000
MAX_CLIENTS:800
你把Timeout设置为15 ? 为什么?
HTTP 408是“请求超时”
基本上它发生在客户端connect() ,但在超时之前不发送任何数据。
10.4.9 408请求超时
客户端在服务器准备等待的时间内没有发出请求。 客户可以随时重复请求而不做任何修改。
RFC2616§10
将您的Timeout更改回默认值300,并停止尝试过早地优化您的系统。
正如人们上面所说,这是请求超时。
你可能会遭受slowloris攻击,如果是这种情况,你很高兴看到日志中的所有这些408,这意味着你的服务器正在丢弃攻击者,是的,检查你的超时设置,检查你是否有mod_reqtimeout。
如果你的服务器没有删除它们,那么它很可能是down / unreachable。
另请参阅如何检测Slowloris?
检查日志中的所有408状态的IP和date时间,检查来自同一个IP的连续请求,并检查他们的请求时间,如果时间差低,那么恭喜你有mod_security启用和正确configuration。 更多的信息检查这个( https://www.modsecurity.org/ )出mod_security。