星外飞客

现象

访问apache静态的http内容,有时候比较慢,有时候“找不到网页”404错误;另外在error.log里也报错:
[Mon May 26 10:11:47 2008] [warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous acceptex failed.


原因

winnt(MPM) - Apache 2.2 参考手册有下列描述
Apache MPM winnt
说明 专门为Windows NT优化过的MPM
状态 MPM
模块名 mpm_winnt_module
源文件 mpm_winnt.c

概述
该多路处理模块(MPM)是Windows NT上的默认值。它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。
Win32DisableAcceptEx 指令
说明 使用accept()代替AcceptEx()接受网络链接
语法 Win32DisableAcceptEx
默认值 AcceptEx()是默认的,使用这个指令将禁用它。
作用域 server config
状态 MPM
模块 mpm_winnt
兼容性 仅在 Apache 2.0.49 及以后的版本中可用

AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。如果你遇到类似于如下的错误:

[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.

你就需要使用这个指令来禁止使用AcceptEx() 。


解决办法

在httpd.conf文件中添加 Win32DisableAcceptEx 标记,如下:

<IfModule mpm_winnt.c>
	ThreadsPerChild 150
	MaxRequestsPerChild 10000
	Win32DisableAcceptEx
</IfModule>

这样可以允许并发连接更大一些。同时性能上也不会有明显的降低。

如果Apache的error.log还是出现大量的:
Sat Dec 24 17:21:28 2006] [warn] (OS 64)指定的网络名不再可
用。 : winnt_accept: Asynchronous AcceptEx failed。

可以参考下列配置:

1、网上邻居->本地连接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉启用LMhosts查询前的勾。

2、控制面版->windows防火墙->高级标签->本地连接设置->服务的标签里勾选安全Web服务器(HTTPS)。

3、然后退出Apache,再打开启动就可以了 ,一开始我没有退出,直接在那重启,就是不可以,一定要先停止,在开启即可。
 

版权所有,转载请注明出处。
转载自 <a href="http://www.yanghengfei.com/archives/351/" title="winnt_accept: Asynchronous AcceptEx failed." rel="bookmark">winnt_accept: Asynchronous AcceptEx failed. | 星外飞客 </a>

我简单说几句

随机推荐

最新评论

无觅相关文章插件,快速提升流量