近来,有个项目跑在WAMP环境下,可是当多个人访问时候,总是容易卡死。
查看apache的错误日志,几乎每一次卡死都是报同一个错:[mpm_winnt:warn] [pid 6508:tid 5008] (OS 64)指定的网络名不再可用。 : AH00341: winnt_accept: Asynchronous AcceptEx failed,网上大部分解决方法是,加Win32DisableAcceptEx,这个是问题所在,但是在apache2.4下面并不奏效,加上反而不能启动apache了。
亲测,apache2.4报这个错,可以直接找到httpd.conf,末尾加上:
AcceptFilter http none
AcceptFilter https none
重启apache,就可以了。希望能够帮更多人解决类似问题。该方法,有幸找到了http://www.oschina.net/question/998019_112854?fromerr=SANUgxwY,这里面的讨论,在此鸣谢。至于其原理,可以参考:http://httpd.apache.org/docs/2.4/mod/core.html#acceptfilter。
--------------------- 本文来自 captian36 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u011220840/article/details/52291329?utm_source=copy
====
<IfModule mpm_winnt_module>
ThreadsPerChild 500
MaxRequestsPerChild 10000
AcceptFilter http None
AcceptFilter https None
</IfModule>
==================
1、打开httpd.conf
2、查找
<span style="color:#333333">#AcceptFilter http none
#AcceptFilter https none</span>
3、修改为
<span style="color:#333333">AcceptFilter http none
AcceptFilter https none</span>
upupw默认添加了这个配置只是注释掉了,我们去掉#号,开启配置。
此处可以解决某些浏览器导致apache慢或者假死不响应的情况,提高兼容性。
4、查找
复制代码
<span style="color:#333333"><IfModule mpm_winnt_module>
ThreadsPerChild 1920
MaxConnectionsPerChild 100000
</IfModule></span>
5、修改为
<span style="color:#333333"><IfModule mpm_winnt_module>
ThreadsPerChild 500
MaxConnectionsPerChild 100000
</IfModule></span>
此处主要是为了解决开启了AcceptFilter参数后如果ThreadsPerChild的值大于512会频繁重启apache的问题,ThreadsPerChild是apache工作进程的线程数最大值到1920超出后会报错,MaxConnectionsPerChild是工作进程最大处理多少请求后载入新的进程。