Apache服务挂起Asynchronous AcceptEx failed.

最近在使用PHP5.6+Apache2.4,搭建开发环境;在实际的开发过程中发现http请求一致处于挂起状态,于是重启(net start/stop)Apache2.4服务,然后再访问问题得到了解决,但是过一会,平凡的打开页面又出现问题,通过查看web服务器的日志,发现报很多"指定的网络名不再可用"的错误:

1
2
3
4
5
[Thu?Nov?20?14:07:43.151780?2014]?[mpm_winnt:warn]?[pid?8752:tid?1132]?(OS?64)指定的网络名不再可用。??:?AH00341:?winnt_accept:?Asynchronous?AcceptEx?failed.
[Thu?Nov?20?14:07:43.152781?2014]?[mpm_winnt:warn]?[pid?8752:tid?1132]?(OS?64)指定的网络名不再可用。??:?AH00341:?winnt_accept:?Asynchronous?AcceptEx?failed.
[Thu?Nov?20?14:07:43.152781?2014]?[mpm_winnt:warn]?[pid?8752:tid?1132]?(OS?64)指定的网络名不再可用。??:?AH00341:?winnt_accept:?Asynchronous?AcceptEx?failed.
[Thu?Nov?20?14:07:43.152781?2014]?[mpm_winnt:warn]?[pid?8752:tid?1132]?(OS?64)指定的网络名不再可用。??:?AH00341:?winnt_accept:?Asynchronous?AcceptEx?failed.
[Thu?Nov?20?14:07:43.152781?2014]?[mpm_winnt:warn]?[pid?8752:tid?1132]?(OS?64)指定的网络名不再可用。??:?AH00341:?winnt_accept:?Asynchronous?AcceptEx?failed.

????在网上找各种资料,都是说在httpd.conf文件中添加 Win32DisableAcceptEx 标记:

1
2
3
4
5
<IfModule?mpm_winnt.c>
????ThreadsPerChild?150
????MaxRequestsPerChild?10000
????Win32DisableAcceptEx
</IfModule>

配置之后问题依然未得到解决,最终查看Apache的手册(PS:查看最新的Apache2.4的手册),看到官方的如下解释:

The default values on Windows are:

AcceptFilter http data
AcceptFilter https data

Window‘s mpm_winnt interprets the?AcceptFilter?to toggle the AcceptEx() API, and does not support http protocol buffering. There are two values which utilize the Windows AcceptEx() API and will recycle network sockets between connections.?data?waits until data has been transmitted as documented above, and the initial data buffer and network endpoint addresses are all retrieved from the single AcceptEx() invocation.?connect?will use the AcceptEx() API, also retrieve the network endpoint addresses, but like?none?the?connect?option does not wait for the initial data transmission.

On Windows,?none?uses accept() rather than AcceptEx() and will not recycle sockets between connections. This is useful for network adapters with broken driver support, as well as some virtual network providers such as vpn drivers, or spam, virus or spyware filters.

在配置文件中添加如下信息:

1
2
AcceptFilter?http?none
AcceptFilter?https?none

最终解决问题

欢迎大家访问我的个人网站 萌萌的IT人

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。