Apache 在windows上崩溃的一种情况

2009年5月1日 由 LEO 留言 »

怪的很,昨天亿枝客网站突然不能访问了(Apache 死了,Crach掉了)我还以为流量太大导致的,后来发现与此无关。检查日志如下:

Insufficient memory (case 2)

指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.
Not enough space: mpm_get_completion_context: Failed to create the transaction pool.

一时找不到原因,就重新启动Apache就好了,也就没有多管…

结果5月30号12点,又出现同样问题,我这时急了,一定得找到原因,马上查看windows日志与windows性能报告,发现问题症结,参考以下图,当时绿色与蓝色两个根线都已经达到最高。也就是磁盘访问与内存分页达到极限。

image

接下来,我就

1、检查防火墙,除了80,其它的都关了

2、删除不用的程序

3、停止FTP服务

最后发现与上面这些都无,主要原因一个网卡被共享上网了,迅速取消,结果问题似乎解决了。

2009-05-03  19:00 也就过了两天,此问题又来了…再次网上寻找解决办法,找到两种办法:

第一种:在httpd.conf 中增加 Win32DisableAcceptEx

具体什么原因,参考这里

然后更改ThreadsPerChild 的值为150  我的 默认是512 如果你的服务器或vps内存超过2G 那么就不用设置,为什么这样做,查看接下来,修改maxrequestsperchild为10000  我的默认是0,依据在这里最后修改情况如下:

<IfModule mpm_winnt_module>
ThreadsPerChild      150
MaxRequestsPerChild    10000

Win32DisableAcceptEx
</IfModule>

第二种:这个方法有点怪异,但是好像比较适合我的情况,因为同样的配置用了半年了,一直没有问题,现在突然有此问题,应该跟windows某些配置发生变化有关。

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

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

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

我尝试了第二种办法,现在验证中…

2009-05-04 2:00 问题仍存在

我无赖升级了apache2.2.8到2.2.11,发现其2.2.8 的 httpd.conf配置差别在以下三个都开启或者存在

LoadModule info_module modules/mod_info.so

LoadModule status_module modules/mod_status.so

<IfModule mpm_winnt_module>
ThreadsPerChild      512
MaxRequestsPerChild    0
</IfModule>

只好明天再看看运行情况…

原创文章,转载请注明: 转载自亿赐客比较购物搜索网

本文链接地址: Apache 在windows上崩溃的一种情况

广告位

8 条评论

  1. LEO 说:

    2009-05-14

    糟糕,今天这问题又出现了,看来还是没有真正解决。

    windows上运行apache 还是不行的。

  2. leo 说:

    2009-05-15

    在httpd.conf里加了以下代码

    Win32DisableAcceptEx

    其实加上这个我早就提到了,但是考虑性能问题,一直没有这样做。

  3. jackie 说:

    问题解决了没有大哥?我的网站好像也出现这种情况啊,apache每隔一会就死掉,重启就好了,你是怎么弄的?发邮件教教我~3q

  4. LEO 说:

    apache在windows上感觉不是很稳定,后来,转到linux上了,就好了。

  5. 工作服 说:

    博主写的不错,谢谢分享,支持

留下评论