+ -
当前位置:首页 → 问答吧 → [warn] (OS 64)指定的网络名不再可用。这个问题如何解决?

[warn] (OS 64)指定的网络名不再可用。这个问题如何解决?

时间:2007-11-24

来源:互联网

2003系统,有时候一天,有时候3天,apache就会死。症状是httpd.exe占用100%cpu,web无法访问。查看日志,发现apache死的时候有以下日志:
[warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.

具体如何解决呢?

按照http://blog.csdn.net/zhonghuazc/archive/2006/02/18/602282.aspx 这里的解决办法不行。
按他的方法apache的内存使用会彪到1.4g(我之前的apache内存使用时150吗~250m)。而且性能下降明显。

作者: elove   发布时间: 2007-11-24

没遇到过..帮你找了个资料不知有没有用:
为了这个问题简直是伤透了心,拖拖拉拉了很长时间也没有解决,这阵子咬咬牙,查遍了相关资料,终于把一堆办法划拉到一起,似乎解决了这个问题。方法很简单,但是似乎不同的服务器有不同的解决方法。
大体解决思路有这么几种:
1 apache与服务器的杀毒软件和防火墙冲突,导致了windows的sock api失败
2 和dhcp或者动态dns有关系
3 通过apache的配置来解决
4 php的bug带来的问题
通过一段时间的排查,应该说基本能确认不是前两点问题。那么如何通过配置来解决呢,因为频繁出现的这个问题还导致了apache性能的下降,更不能容忍的是,我们不清楚什么时候apache会出现memory leak。
因此参考了国外网友的经验,在配置文件里面对以下几项开关选项做了设置:
Win32DisableAcceptEx
EnableMMAP Off
EnableSendfile Off
这个方法的处理过程可以参见apache的bug 21425。
问题还没有结束,因为之前配置过Win32DisableAcceptEx开关,打开之后会出现这个问题:
FATAL: erealloc(): Unable to allocate 98304 bytes
如何解决这个问题呢?这里还有解决方法:
将ThreadsPerChild选项从默认的250或者更多,降至170以下。
ThreadsPerChild 170
这样配置之后,这两个问题都不出现了。log里面不再有error和warn了。
最后我还到php的官方buglist里面确认了一下,应该说最新版本的php应该不会出现一些影响apache这个问题的可能。这样,经过下午的观测,到现在为止apache工作还算正常。

作者: gleon   发布时间: 2007-11-24

我也遇到过 楼上版主的文章 很有用 可以看着解决一下

作者: cnlaoke   发布时间: 2007-11-28

按照楼主方法,把以下2个关了后apache不会挂了。
EnableMMAP Off
EnableSendfile Off
不过有时候还是会报:指定的网络名不再可用。

作者: elove   发布时间: 2007-12-12