Windows下Apache模塊配置 mpm_winnt_module。來自xwamp。
Windows下Apache的運行模塊一般爲winnt,是專門針對Windows NT優化的MPM(多路處理模塊),它使用一個單獨的父進程產生一個單獨的子進程,在這個子進程中輪流產生多個線程來處理請求。也就是說 mpm_winnt只能啓動父子兩個進程, 不能像Linux下那樣同時啓動多個進程。以下爲默認配置:
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxConnectionsPerChild 0
</IfModule>
-
ThreadsPerChild:constant number of worker threads in the server process。線程數量。一般來說線程數量越大,能夠更好的處理更多併發連接。
-
MaxConnectionsPerChild:maximum number of connections a server process serves。累計最多處理到多少個請求,超過該值會自動重啓Apache。設置爲0,則不限制,但是有可能會照成內存泄漏。
- MaxMemFree:MaxMemFree指令用於設置主內存分配程序在未調用free()的情況下允許持有的最大自由內存數量(KB)。若未設置或設置爲"0",將表示無限制。 MaxMemFree的默認值爲2048。一般不需要配置。
可能的錯誤
Apache出現以下日誌:
指定的網絡名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
需要加上配置:
Win32DisableAcceptEx
AcceptEx()是一個微軟的WinSock2 API ,通過使用BSD風格的accept() API提供了性能改善。一些流行的Windows產品,比如防病毒軟件或虛擬專用網絡軟件,會干擾AcceptEx()的正確操作。如果你遇到類似於如下 的錯誤:一般的解決辦法是關閉 AcceptEx()。
建議不要安裝一些服務器安全軟件(主要是國產的)。反正我是不安裝,我的所有服務器從來沒有出現過上面的錯誤。
一些總結
-
如果性能沒有問題的話,就使用這個默認的配置。
- 如果想設置MaxConnectionsPerChild大於0的話,可以設置爲ThreadsPerChild的100倍,不要設置的太小。如何判斷是否太小?查看Apache的錯誤日誌,計算一下Apache重啓的時間間隔,儘量不要低於1個小時(根據個人喜好,頻繁重啓Apache一般來說不太好)。