有一個升級服務器,這幾天一直訪問的比較慢。導致部分用戶升級不了。看了一下服務器的負載,發現
CPU和內存占用的都不是很高,可能是Apache配置不當造成的,一番搜索,找到了MPM的配置,提速很明顯哦 !
Apache 的 MPM(Multi -Processing Modules,多道處理模塊),經過適當的配置,可以提高服務器的負載能力。
不過,Linux和Windows版本的Apache ,MPM不盡相同,感覺Linux更強大些,可以同時開好幾個進程進行Apache的響應。
我機子上的是Wamp環境,在httpd.conf中有這樣一段:
# Server-pool management (MPM specific)
# Include conf/extra/httpd-mpm.conf
注釋掉,在httpd-mpm.conf中,會出現好幾種類型的配置,要根據自己的具體環境配置相應的文件。
通過 httpd -l 可以,查看自己的Apache部署的是哪個模塊。
D:\wamp\bin\apache\Apache2.2.21\bin\httpd -l
Complied in modules:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c
看到里面有mpm_winnt.c ,我們就在httpd-mpm.conf的<IfModule mpm_winnt_module>進行配置
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>
其中,ThreadsPerChild 是指一個進程最多擁有的線程數(Windows版本,貌似不可以開啟多個進程),一般100-500就可以,
根據服務器的具體性能來決定。MaxRequestsPerChild,是指一個線程最多可以接受的連接數,默認是0,就是不限制的意思,
但是網上有文章說,0會導致內存泄露。所以,可以根據實際情況,配置一個比較大的值。我估計Apache會在幾個線程之間進
行輪詢,找到負載最輕的一個線程來接受新的連接。
另附: Apache 官方MPM說明http://httpd.apache.org/docs/2.2/zh-cn/mpm.html