360
apache
winsock
]
Apache服务器以前一直是正常的。年后突然访问不了。浏览器左下角一直显示“正在打开网页 …”。但是页面一直是空白的。 服务器上打开任务管理器也可以看到httpd进程有cpu占用。这说明浏览器的请求服务器端应该收到了,但是服务器端的回应浏览器端应该一直没有收到。 服务器上装了360安全卫士。还有驱逐舰杀毒软件。好像360是新装上去的。 首先退出了360重启apache还是不行。再退出所有的杀毒软件和监控软件再试,仍然不行。 打开了事件查看器发现有一条:httpd.exe: Could not reliably determine the server’s fully qualified domain name, using 192.168.0.2 for ServerName。 一般用的是192.168.1.2来访问。突然觉得是双网卡的问题导致的。(其实不可能,因为之前一直就是双网卡)。修改了httpd.conf中的Listen 80改为Listen 192.168.1.2:80。问题仍旧。 打开apache的错误日志文件,发现有一条: [error] (OS 10038)在一个非套接字上尝试了一个操作。 : Child 1688: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive. 用apache Win32DisableAcceptEx为关键字网上查了一下,找到一个说是可以解决的方案: 在httpd.conf文件末尾添加 Win32DisableAcceptEx 标记,如下:
然后重新启动apache。 仍然不行。日志中显示: [error] (OS 10038)在一个非套接字上尝试了一个操作。 : Too many errors in select loop. Child process exiting. 网上另一个文章说是杀毒软件修改了 WINSOCK 导致的。可以用netsh winsock reset恢复。 运行netsh winsock reset命令后,重启Apache。一切正常了。 因为整个过程是用QQ告诉同事来操作的。所以前后花了1个小时。有些错误描述可能有拼写错误。 其实一开始就觉得是杀毒软件的问题,只是没想到它们会偷偷地修改winsock。所以退出它们无济于事。