Apache 錯誤記錄

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.REGARDSARUNmlegg 給出瞭解決辦法: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 opensnow 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 WinsockAfterwards 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() 關掉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章