AH00341: winnt_accept: Asynchronous AcceptEx failed.解决方案
这个问题困扰了我很久,一直以为是win2003与apache的兼容问题,正好最近好奇心比较重,简单在网上学习了一下。
当你配置apache 访问网页一直在加载,似乎被挂起. 转圈需要3分钟多钟, 最终显示无法访问. 或者超时.
错误日志中有如下提示:
[Thu May 30 10:33:31.148293 2013] [mpm_winnt:warn] [pid 8072:tid 1756] (OS 64)指定的网络名不再可用。 : AH00341: winnt_accept: Asynchronous AcceptEx failed.
已经可以解决了, 我翻阅了xampp官方的配置文档, 发现如下信息:
# XAMPP: We disable operating system specific optimizations for a listening
# socket by the http protocol here. IE 64 bit make problems without this.
理解为关闭系统监听, 浏览器监听等, 最后一句说明ie 64位可能不受影响. win8 64位系统上的ie事实上一个进程, 这句话还需要分析测试.
apachelounge也有人提到这个问题:
When you have hangs, slow traffic and/or when having in your log entries like Asynchronous AcceptEx failed. You can try the following settings:
解决方案, 在配置文件中加入:
AcceptFilter http none
AcceptFilter https none
EnableSendfile Off
EnableMMAP off
最近从虚拟主机转到了VPS之后自由了许多,但是也多了不少问题。在弄好了MySQL之后Apache又出了问题,具体表现是网站每过一定时间就无法打开,静态页面也无法访问。重启Apache后恢复,确认为Apache问题。在查看error log之后发现有这么一行:“(OS 64)指定的网络名不再可用。 : AH00341: winnt_accept: Asynchronous AcceptEx failed.”
翻阅了不少网络文章,大多数表示需要使用Win32DisableAcceptEx,但reizhi在尝试后未果。将全部调试步骤罗列如下,希望能够有所帮助。
系统环境:Windows 2003r2
Apache版本:2.4
1.打开httpd.conf,添加以下代码:
<IfModule mpm_winnt.c> ThreadsPerChild 1000 MaxRequestsPerChild 10000 Win32DisableAcceptEx </IfModule>
2.将ThreadsPerChild选项从默认的250或者更多,降至170以下
ThreadsPerChild 170
3.
网上邻居->本地连接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉启用LMhosts查询前的勾。
控制面版->windows防火墙->高级标签->本地连接设置->服务的标签里勾选安全Web服务器(HTTPS)。
4.在httpd.conf中添加以下代码
AcceptFilter http none AcceptFilter https none EnableSendfile Off EnableMMAP off
reizhi最终使用方法4解决问题,已正常运行数天。