某些浏览器导致apache慢或假死问题

近来,有个项目跑在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

====

 


    ThreadsPerChild      500
    MaxRequestsPerChild    10000
  AcceptFilter http None
   AcceptFilter https None

 

==================

1、打开httpd.conf 
2、查找
 

#AcceptFilter http none
#AcceptFilter https none

3、修改为
 

AcceptFilter http none
AcceptFilter https none

upupw默认添加了这个配置只是注释掉了,我们去掉#号,开启配置。 
此处可以解决某些浏览器导致apache慢或者假死不响应的情况,提高兼容性。 
4、查找
复制代码


    ThreadsPerChild          1920
    MaxConnectionsPerChild   100000

5、修改为
 


    ThreadsPerChild          500
    MaxConnectionsPerChild   100000

此处主要是为了解决开启了AcceptFilter参数后如果ThreadsPerChild的值大于512会频繁重启apache的问题,ThreadsPerChild是apache工作进程的线程数最大值到1920超出后会报错,MaxConnectionsPerChild是工作进程最大处理多少请求后载入新的进程。 

https://www.wxm6.com

你可能感兴趣的:(php高级技巧)