关于apache 在2003中的运行错误

今天把服务器重启了一下,结果网站过了三四个小时就不能访问了,去看了错误日志

事件类型: 错误
事件来源: Apache Service
事件种类: 无
事件 ID: 3299
日期:  2007-7-14
事件:  8:37:38
用户:  N/A
计算机: JJLOU
描述:
The Apache service named  reported the following error:
>>> [Sat Jul 14 08:37:38 2007] [notice]
 Disabled use of AcceptEx() WinSock2 API     .

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
是这个错误,查了很多资料,我已经把acceptE()关掉就可以了,先前也发生过这个问题,关掉就好了,结果现在又来了

感觉很奇怪,今天看了这边问题,试试看,能解决问题不? 以下文章的链接是:

http://hi.baidu.com/7655cjc/blog/item/1de9970e36d285e637d12272.html

 
查看文章
  
apache 遇到[error] (OS 10038) 错误
2007-06-01 11:38
我的机器是windows server 2003 主要是用作开发用,除了apache 还装了很多其他软件;

首先一次重新启动后遇到了这个问题:
taskmanager 里有两个httpd进程,其中一个占用cpu 很高 于是去查看event viewer 没有看到问题...........
去看error.log 果然问题出在这里,里面有好多个这样的错误,看来是陷入死循环了。

error] (OS 10038) : Child 3356: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive.

于是我很开心的去网上查解决办法,去了几个国内论坛也去了几个国外的论坛,最先找到的解决办法都是:

解决方法:
编辑httpd.conf

在文件尾加入下面一行

Win32DisableAcceptEx

重启apache

可是我的问题就是还没有解决,以出现了新的问题

 

Fri Jun 01 10:15:27 2007] [notice] Apache/2.2.3 (Win32) PHP/5.1.4 configured -- resuming normal operations
[Fri Jun 01 10:15:27 2007] [notice] Server built: Jul 27 2006 16:49:49
[Fri Jun 01 10:15:27 2007] [notice] Parent: Created child process 3344
[Fri Jun 01 10:15:27 2007] [notice] Disabled use of AcceptEx() WinSock2 API
[Fri Jun 01 10:15:29 2007] [notice] Child 3344: Child process is running
[Fri Jun 01 10:15:29 2007] [notice] Child 3344: Acquired the start mutex.
[Fri Jun 01 10:15:29 2007] [notice] Child 3344: Starting 250 worker threads.
[Fri Jun 01 10:15:29 2007] [notice] Child 3344: Listening on port 80.
[Fri Jun 01 10:15:29 2007] [error] (OS 10038)An operation was attempted on something that is not a socket. : Too many errors in select loop. Child process exiting.
[Fri Jun 01 10:15:29 2007] [notice] Child 3344: Exit event signaled. Child process is ending.
[Fri Jun 01 10:15:30 2007] [notice] Child 3344: Released the start mutex
[Fri Jun 01 10:15:30 2007] [notice] Child 3344: Waiting for 250 worker threads to exit.
[Fri Jun 01 10:15:30 2007] [notice] Child 3344: All worker threads have exited.
[Fri Jun 01 10:15:30 2007] [notice] Child 3344: Child process is exiting
[Fri Jun 01 10:15:30 2007] [notice] Parent: child process exited with status 0 -- Restarting.
[Fri Jun 01 10:15:31 2007] [notice] Apache/2.2.3 (Win32) PHP/5.1.4 configured -- resuming normal operations
[Fri Jun 01 10:15:31 2007] [notice] Server built: Jul 27 2006 16:49:49
[Fri Jun 01 10:15:31 2007] [notice] Parent: Created child process 288
[Fri Jun 01 10:15:31 2007] [notice] Disabled use of AcceptEx() WinSock2 API
[Fri Jun 01 10:15:32 2007] [notice] Child 288: Child process is running
[Fri Jun 01 10:15:32 2007] [notice] Child 288: Acquired the start mutex.
[Fri Jun 01 10:15:32 2007] [notice] Child 288: Starting 250 worker threads.
[Fri Jun 01 10:15:32 2007] [notice] Child 288: Listening on port 80.
[Fri Jun 01 10:15:32 2007] [error] (OS 10038)An operation was attempted on something that is not a socket. : Too many errors in select loop. Child process exiting.

 

 

就这样的不停重复。。。。。。。。。。。
于是继续找。。同时在http server 的文档上查了一下
Win32DisableAcceptEx 这个命令
同时找到下面两个可以说是建议吧:
一、
Udpsocket Wsa Error = 10038
    首先这也是个10038错误,和winsock相关,我觉得可能有用就看了一下
问题是这样陈述的:
    HI,

cAN ANYBODY HELP IN THE FOLLOWING ERROR:

I STARTED MY SYS TODAY , AND IT SHOWED ME THE ERROR " UDPSOCKET" AND THEN IN ANOTHER DIALOGBOX IT SAID " WSA ERROR = 10038"

NOW I M UNABLE TO CONNECT TO THE NETWORKING MACHINES AND NOR CAN I CONNECT TO THE INTERNET.


CAN ANYBODY HELP IN THIS REGARD ? WD REALLY APPRECIATE THAT .

IT'S PRETTY URGENT.

REGARDS
ARUN


mlegg 给出了解决办法:
If you have updated Windows and have SP2 (you should by now)
Go to the Start button > to the Run box > type cmd and the command window opens

now type: netsh winsock reset

this will repair your corrupted Winsock

if you do not have SP2 yet for some reason, then read this page from
MS on how to repair your Winsock


Afterwards go to Windows Updates and get everything you do not have yet. There has been a lot of updates and patches over the last few months. They come out the 2nd Tuesday of every month, but this month they were released early to fix a critical patch.


同时我也在 同时在http server 的文档上看到 Win32DisableAcceptEx (使用accept()代替AcceptEx()接受网络链接) 这个命令,有一个关于 AcceptEx()的介绍: AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。如果你遇到类似于如下的错误:

[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.

你就需要使用这个指令来禁止使用AcceptEx()


于是我使用了netsh winsock reset命令也把Symantec AntiVirus 卸载了
重新启动,问题解决


后记:
问题虽然解决了,但是从头到尾还没有完全搞清楚, 还有两个疑问:(1)还是不知道问题到底是怎么产生的,我以前就一真用Symantec AntiVirus,如果是因为它,为什么到现在才产生这个问题,如果说是由于更新病毒库的原因,我自己也不能说服我自己相信这个理由(2)如果是由于系统升级产生的问题那么为什么会产生这个问题?呵呵,饿了,先去吃饭,回来再解决之两个疑问

我又重新把
Symantec AntiVirus装起,呀,没有问题,不知道问题是怎么产生的了,就是 Symantec AntiVirus还没有更新病毒库呢,哈,学校的网络有点差,毕竟是教育网,怎样才让访问国外的网站速度快一点呢?....

总这可以确定是winsock2 corrupted 了要用 netsh winsock reset 恢复而不是用
Win32DisableAcceptEx
把 acceptex() 关掉
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值