[Resolve]Apache2.4 (OS 64)指定的網路名稱無法使用 AH00341: winnt_accept: Asynchronous AcceptEx failed. 問題排除
新裝的Apache 2.4.x 版本 在windows 平台上安裝好 看起來正常,但執行一會就無法連上了
而services 都還是正常啟動的 只是無法連線,重啟後又正常但沒多久又會再次發生
查詢ERROR LOG 發現以下錯誤訊息
Apache (OS 64)指定的網路名稱無法使用 AH00341: winnt_accept: Asynchronous AcceptEx failed.
找了一下發現蠻多人都有此問題,有人提及 apache 2.0 可以在httpd.conf mpm_winnt 加上 Win32DisableAcceptEx參數即可排除此問題
<IfModule mpm_winnt.c>
Win32DisableAcceptEx
EnableMMAP Off
EnableSendfile Off
ThreadsPerChild 1700
MaxRequestsPerChild 0
</IfModule>
說AcceptEx()是一個微軟的WinSock2 API ,通過使用BSD風格的accept() API提供了性能改善。一些流行的Windows產品,比如防病毒軟件或虛擬專用網絡軟件,會幹擾AcceptEx()的正確操作。
官方也有相關的參考說明:
http://httpd.apache.org/docs/2.0/mod/mp ... leacceptex
但http.conf裡找不到mpm_winnt,看來可能不適用,網路也一堆人反應沒效果
再找了一下發現把conf/httpd.conf 之中註解掉的 EnableMMAP & EnableSendfile
#EnableMMAP off
#EnableSendfile on
#AcceptFilter http none
#AcceptFilter https none
打開並設定如下
代碼: 選擇全部
EnableMMAP off
EnableSendfile off
AcceptFilter http none
AcceptFilter https none
但如果加了AcceptFilter https none不能使用ssl的情況,則要重新MARK #AcceptFilter https none(我是沒有遇過,是參考的文件中有提及,標示出來留意一下)
相關的參考說明:
http://httpd.apache.org/docs/2.4/mod/core.html
http://www.upupw.net/apachehelp/n115.html