[Apache] 解決Server 服務變慢或者假死狀態

最近遇到一個問題, 環境是Apache & Tomcat.
跟MIS申請了, 透過DNS 解析域名 打到我的兩台Server.

程式部份我檢查過都沒有效能上的問題.
服務啟用後都正常.
一把流量導過去就掛掉了.

檢查了很多地方, 最後發現調整這個地方就好了.

<IfModule mpm_winnt_module>
   ThreadsPerChild 1920
   MaxRequestsPerChild 0
   AcceptFilter http none
   AcceptFilter https none   
</IfModule>

32 bit的請改成.

<IfModule mpm_winnt.c>
     ThreadsPerChild 1000
     MaxRequestsPerChild 10000
     Win32DisableAcceptEx
</IfModule>

原因是Apache 的AcceptEx在window下會出現這種問題, 只在APAche2.0.49以上版本會有影響. 
《Apache 2_2 中文版參考手冊》上說:"AcceptEx()是一個微軟的WinSock2 API,
通過使用BSD風格的accept() API提供了性能改善。
一些流行的Windows產品,比如防毒軟體或虛擬私人網路絡軟體,會干擾AcceptEx()的正確操作。
如果你遇到類似於如下 的錯誤:一般的解決辦法是關閉 AcceptEx()”。
可能是 Windows Update ,防火牆 或者一些軟體造成 Microsoft WinSock v2 API 動作不正常,
會干擾WinSock2 API, 就會影響AcceptEx()的正確操作, 就可能出現上面所出現的問題.
但是關閉會影響Apache的性能.
但我想如果沒有什麼 造成影響,最好還是不要隨便關閉這個功能比較好.

 

Reference:
 Apache 的官方網頁:
http://httpd.apache.org/docs-2.0/mod/mpm_winnt.html#win32disableacceptex