还是WAMP的问题…

之前提到站点服务器的apache日志里面提到了几个warn,其中一个: [warn] (OS 64)The specified network name is no longer available. : winnt_accept: Asynchronous AcceptEx failed 为了这个问题简直是伤透了心,拖拖拉拉了很长时间也没有解决,这阵子咬咬牙,查遍了相关资料,终于把一堆办法划拉到一起,似乎解决了这个问题。方法很简单,但是似乎不同的服务器有不同的解决方法。大体解决思路有这么几种: 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工作还算正常。
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: