我们在widows servrt系统中使用Apache建立自己的web站点时,有时候会出现Apache假死堵塞卡死无响应的现象,对此很多小伙伴都束手无措,不知如何操作,下面就来给大家分享一下解决Windows Server下Apache假死堵塞卡死无响应方法教程。
首先要排除一下,是否采用了页面压缩,部分服务器对压缩功能支持有限,如开启此项设置,比如HTTP压缩之gzip,等等,建议线关闭。
启用MPM模块配置文件
Apache针对不同的操作系统提供了多个不同的MPM模块,例如:mpm_beos、mpm_event、mpm_netware、mpmt_os2、mpm_prefork、mpm_winnt、mpm_worker。
Windows操作系统上默认的MPM模块是mpm_winnt,mpm_winnt模块是专门针对Windows操作系统而优化设计的MPM模块。它只创建一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。
在对Apache的MPM模块具备一定了解后,我们就可以针对不同的MPM模块来修改Apache的最大并发连接数配置了
修改任何文件,建议做好备份。
apache\conf\httpd.conf文件中启用该配置文件
- # Server-pool management (MPM specific)
- Include conf/extra/httpd-mpm.conf (去掉该行前面的注释符号"#")
对应的配置参数作用如下:
- ThreadsPerChild:每个子进程的最大并发线程数。
- MaxRequestsPerChild:每个子进程允许处理的请求总数。如果累计处理的请求数超过该值,该子进程将会结束(然后根据需要确定是否创建新的子进程),该值设为0表示不限制请求总数(子进程永不结束)。
- 该参数建议设为非零的值,可以带来以下两个好处:
- 1. 可以防止程序中可能存在的内存泄漏无限进行下去,从而耗尽内存。
- 2. 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
注意:在以上涉及到统计请求数量的参数中,对于KeepAlive的连接,只有第一个请求会被计数。
修改MPM模块配置http-mpm.conf文件中的相关配置
在Apace安装目录/conf/extra目录中有一个名为httpd-mpm.conf
- #由于mpm_winnt模块只会创建1个子进程,因此这里对单个子进程的参数设置就相当于对整个Apache的参数设置。
- <IfModule mpm_winnt_module>
- ThreadsPerChild 521 #默认值是150,推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
- MaxRequestsPerChild 3000 #推荐设置:小=10000 中或大=20000~100000
- </IfModule>
再考虑一个可能,(apache 2.4)
apache 2.4 IE10浏览器会导致Apache2.4版本阻塞假死,有一种说法,用IE10登录了网站,导致了apache的卡死,这里做一个防范:
在配置文件httpd.conf中添加如下两句:
- AcceptFilter http none
- AcceptFilter https none
最后重启apache。