Apache2.2(OS 64)指定的网络名不再可用的处理

     昨天收到一个客户方电话求助,说是内网网站访问慢,log里刷新的日志为:[warn] (OS 64)指定的网络名不再可用. : winnt_accept: Asynchronous AcceptEx failed.

       客户现场环境为windows2003操作系统,apache版本2.2.24。

    经在apache2.2官方文档上面查找windows apache使用的多道处理模块mpm_winnt_module下有一个对应的指令Win32DisableAcceptEx 指令,可以用来处理这个问题。

AcceptEx()是Microsoft WinSock v2 API,accept()在某些情况下,与使用BSD样式API 相比,它提供了一些性能改进 。一些流行的Windows产品(通常是病毒扫描或虚拟专用网络包)存在干扰正常操作的错误 AcceptEx()。如果遇到错误情况,例如:

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

你应该使用这个指令来禁用它 AcceptEx()。

     官方链接地址:http://httpd.apache.org/docs/2.2/mod/mpm_winnt.html

     具体处理办法为:

在httpd.conf文件中添加 Win32DisableAcceptEx 标记,如下: 
<IfModule mpm_winnt.c> 
ThreadsPerChild 150 
MaxRequestsPerChild 10000 
Win32DisableAcceptEx 
</IfModule>

或者

在conf/extra中编辑httpd-mpm.conf
<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    10000 
    Win32DisableAcceptEx
</IfModule>

    重启apache即可,问题解决。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章