From http://xiuluo999.bokee.com/viewdiary.12862739.html
看到的一篇比较有价值的文章,:)
前段时间自己机器上安装的APACHE服务器突然出现异常,症状表现为apache.exe父进程不断产生和停止一个子进程apache.exe,内存被大量占用,导致服务器无法访问。无奈之下在网上找解决方案,查找到有朋友也遇到过类似情况,该网友是通过修改apache配置文件中 “MaxRequestsPerChild:一个服务进程允许的最大请求数 ”的值来解决的,默认情况下该值为0,改成100问题解决。但是我按照他的方法并不能解决自己的问题,可见虽然我们症状相同,但是问题的本质不同,我又在网上查了很多资料,配置文件被改的乱七八糟问题依然没有解决。apache服务器被重新安装了几十次也没有用,无奈之下把系统重装了,然后安装apache,终于恢复正常了。由此可见问题不是由配置错误而引起的,虽然不知道具体原因,但是既然问题解决了就算了。可是没过几天相同的问题又出现了,我已经快要崩溃了,这样要我如何学习PHP。于是决定找出问题的起因,网上搜遍了资料也没解决问题,后来只能在apache日志中找答案了,在日志中发现如下信息:
[Sun Sep 24 11:13:36 2006] [notice] Apache/2.0.59 (Win32) PHP/5.0.3 configured --
resuming normal operations
[Sun Sep 24 11:13:36 2006] [notice] Server built: Jul 27 2006 15:55:03
[Sun Sep 24 11:13:36 2006] [notice] Parent: Created child process 1736
[Sun Sep 24 11:13:36 2006] [notice] Child 1736: Child process is running
[Sun Sep 24 11:13:36 2006] [crit] (OS 10022)提供了一个无效的参数。 : Child 1736:
setup_inherited_listeners(), WSASocket failed to open the inherited socket.
[Sun Sep 24 11:13:36 2006] [error] Parent: child process exited with status 3 --
Aborting.
此信息大量重复,基本意思是apache.exe父进程产生了一个apache.exe子进程-子进程开始运行-子进程函数setup_inherited_listeners()错误,WSASocket打开inherited socket失败-子进程以异常中断状态退出,显然问题的关键在:
[Sun Sep 24 11:13:36 2006] [crit] (OS 10022)提供了一个无效的参数。 : Child 1736:
setup_inherited_listeners(), WSASocket failed to open the inherited socket.
不是很懂这个函数干什么的,为什么会发生错误,这个估计只有apache开发人员才知道了。但是看到socket这个词还比较敏感,因为很多病毒流氓软件都喜欢在winsock里面做文章,关于winsock的描叙,在百度中有一段这样的描叙:
“WinSock是Windows Sockets的缩写,它作为Windows和TCP/IP之间的接口。而我们都知道TCP/IP在
互联网举足轻重的作用,如果希望了解Socket,那么Berkeley Socket不可不提,它是在UNIX下对
TCP/IP进行编程的标准模式。WinSock的设计和它很象,这样可以使UNIX上的应用程序在Windows平台
上使用。但是,两者也有一些区别,如WinSocket利用了Windows的一些特点,而这些特点对于UNIX来
说是没有的。”
于是抱着试一试的心态检查了一下自己电脑winsock中的文件,这里用的是工具hijackthis(一款国外软件,在反病毒界比较流行,主要用来对系统中病毒喜欢修改的地方进行扫描),果然在hijackthis的日志中发现这个项目:
O10 - Unknown file in Winsock LSP: c:\windows\system32\tcpipdog0.dll
在百度中搜索dll文件名,发现这个东西是DR.com(网络管理软件,学校用这个来管理校园网)插入在系统中的,难道这个就是问题所在,此10项无法直接用hijackthis删除,于是我就用专门删除winsock中文件的工具:LSPfix.exe把该文件删除。当然删除winsock中的文件会有一定的风险,可能造成无法上网的现象,如果删除后无法上网,需要用软件:WinsockxpFix.exe修复winsock。一切完成之后,apache服务器正常运行了,问题终于解决了,心情好多了。但是我不能在用这个DR.COM了,一旦再次使用,winsock中又会被插入文件,那么apache又出问题。郁闷了,看来只能放弃用校园望了,曾经在学校论坛上发现有高人知道某种方法避免了这种情况,但是自己没有仔细看,下次要好好
研究一下。
总结:在winsock中插文件的不一定就是DR.COM,很多软件都可能在其中插入文件,所以造成apache服务器异常的原因会很多,但是这类问题总体来说应该还算是软件的冲突。为什么这类软件会引起apache服务器异常,这个还需要专业人员来解答。