2011-02-22

apache2.2 訊息 winnt_accept: Asynchronous AcceptEx failed.

這二天 apache2.2 出現
[Tue Feb 22 14:59:52 2011] [warn] (OS 121)信號等待逾時。 : winnt_accept: Asynchronous AcceptEx failed.


[Tue Feb 22 14:59:52 2011] [warn] (OS 64)指定的網路名稱無法使用。 : winnt_accept: Asynchronous AcceptEx failed.
 
造成WEB操作介面 斷斷續續 需要一直等待
上網查詢解決方式
 
轉貼: http://blog.chweng.idv.tw/archives/118
 
主要是說這 AcceptEx() 是 Microsoft WinSock v2 API 一組提升網路效率 API 中的指令。而且在 Windows 上似乎蠻有可能出問題的。




註:可能為了效能還是預設為開啟 AcceptEx()



如果無預警的發生問題,我猜可能是 Windows Update 或是防火牆、防毒軟體更新了某些網路原件,造成 Microsoft WinSock v2 API 動作不正常,這時可以把這個功能先給關掉。



依照官方說明 , Win32DisableAcceptEx 這個功能,只有 2.0.49 版以後的才可以使用,所以我猜測 AcceptEx() 這個指令大概也是 2.0.49 才會開始支援(目前最新的就是 2.0.49)。



關掉 AcceptEx() 的方式只要在 httpd.conf 找到 區段,加入 Win32DisableAcceptEx 就可以了。



<IfModule mpm_winnt.c>

Win32DisableAcceptEx #加入這一行

ThreadsPerChild 250

MaxRequestsPerChild 0

</IfModule>


然後重新啟動 Apache ,動作果然都正常了。