这几天Apache遇到了大的麻烦。肯请各位大佬伸手帮助。
机器的操作系是Win2003.Apache所用的安装是Appserv 2.5.9版本。机器是新安装的。这系统已经成功运行了两年多了。以前一直没有这样的情形。现在将出现的情形和我处理的方法一并写下。希望能得到各位的帮助。
一、机器重启后,网页能正常运行,估计一个小时后,Apache会出现这样的错误。
[Sat Dec 11 10:32:07 2010] [error] [client 58.248.217.245] File does not exist: I:/AppServ/www/ajax, referer: http://xxx.com/
[Sat Dec 11 10:32:52 2010] [error] [client 58.248.217.245] File does not exist: I:/AppServ/www/css/body_bg.jpg, referer:
http://www.xxx.com/
[Sat Dec 11 10:32:56 2010] [error] [client 58.248.217.245] File does not exist: I:/AppServ/www/images/list_new_index_03.jpg, referer:
http://www.xxx.com/
[Sat Dec 11 10:33:12 2010] [error] [client 58.248.217.245] File does not exist: I:/AppServ/www/ajax, referer: http://xxx.com/
[Sat Dec 11 10:33:29 2010] [warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
[Sat Dec 11 10:33:29 2010] [warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
根据网上的解决方法:
在httpd.conf文件中添加 Win32DisableAcceptEx 标记,如下:
<IfModule mpm_winnt.c>
ThreadsPerChild 150
MaxRequestsPerChild 10000
Win32DisableAcceptEx
</IfModule>
二、关了Apache服务,重启Apache服务。启动正常。网页打开的速度也正常。
但是Apache出现另外一个错误,但网页能正常浏览,没有管他。具体的日志如下
[Sat Dec 11 11:01:02 2010] [notice] Apache/2.2.4 (Win32) PHP/5.2.3 configured -- resuming normal operations
[Sat Dec 11 11:01:02 2010] [notice] Server built: Jan 9 2007 23:17:20
[Sat Dec 11 11:01:02 2010] [notice] Parent: Created child process 1392
[Sat Dec 11 11:01:02 2010] [notice] Disabled use of AcceptEx() WinSock2 API
[Sat Dec 11 11:01:03 2010] [notice] Child 1392: Child process is running
[Sat Dec 11 11:01:03 2010] [notice] Child 1392: Acquired the start mutex.
[Sat Dec 11 11:01:03 2010] [notice] Child 1392: Starting 150 worker threads.
[Sat Dec 11 11:01:03 2010] [notice] Child 1392: Listening on port 80.
运行一会儿,网页打不开。
根据网页的解决方案,说是"这是winsock问题,造成apache死循环,重置winsock即可"执行"netsh winsock reset"就行。
执行后系统提示重启服务器,照做,重启服务器。网页能照样打开,日志照常错误。
可是我没有关闭Apache服务的原因,就是将Apache服务关了,执行"netsh winsock reset"服务,重启后网页能打开,日志照常。
想如果日志报错,网页能正常打开也行,可是半个小时后网页打不开了。
三、根据网页的提示可能是"Acquired the start mutex."的错误。再对httpd.conf作了一些修改
原始的mpm模块参数如下
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
修改成这样
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 1000
MaxClients 500
MaxRequestsPerChild 1000
</IfModule>
可是运行了半分钟后网页就打不开了。恢复以前的配置。打开网页正常,可是半个小时过去了,网页又打不开了
网友们,帮我想想办法,指导一下,多谢谢!