西数超哥博客
运维经验教程分享

apache cc攻击导致线程快速耗尽解决办法

apache错误日志出现 :

线程耗尽 (AH00326)

启用的模块:mod_reqtimeout

这个模块专门用来切断“挤牙膏”式的慢速请求,防止它们长期霸占线程。在 httpd.conf 中确认加载,并添加配置:

LoadModule reqtimeout_module modules/mod_reqtimeout.so

<IfModule reqtimeout_module>
    RequestReadTimeout header=10-30,MinRate=500
    RequestReadTimeout body=10-30,MinRate=500
</IfModule>

这表示:请求头/体必须在 10 秒内开始传输,且传输速率不能低于 500 字节/秒,否则 Apache 会主动断开连接,释放线程。对于你这种被大量连接打满的情况,这个模块能有效防止单个连接无限期占用资源。

同时检查 KeepAlive 设置

如果 KeepAlive 开启且超时时间很长,空闲连接也会占着线程。在 httpd.conf 中把 KeepAliveTimeout 调低(例如设为 2-5 秒),让空闲线程更快回到池子里。

同时增加线程 ,提高 ThreadsPerChild 的值。

找到 <IfModule mpm_winnt_module> 配置段,将 ThreadsPerChild 调整到一个更高的值。例如,可以尝试改为 256 或 512(请根据服务器实际负载调整,512 仅为示例,非绝对推荐值)。

<IfModule mpm_winnt_module>
    ThreadsPerChild 512
    MaxRequestsPerChild 0
</IfModule>

确保配置生效:检查主配置文件 conf/httpd.conf,确保 Include conf/extra/httpd-mpm.conf 这一行没有被 # 注释掉。

重启服务:保存修改后,重启 Apache 服务。

结合日志分析,防火墙或者安全组拦截异常访问ip地址段.

赞(0)
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除。本站原创内容未经允许不得转载:西数超哥博客 » apache cc攻击导致线程快速耗尽解决办法

登录

找回密码

注册