最近遇到一個問題, 環境是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