1族沃、啟用MPM模塊配置文件
Apace安裝目錄/conf/extra/httpd-mpm.conf误辑,這個文件主要用于進(jìn)行MPM模塊的相關(guān)配置。
2尤泽、在默認(rèn)情況下欣簇,Apache的MPM模塊配置文件并沒有啟用,因此我們需要在httpd.conf文件中啟用該配置文件坯约,如下所示:
Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
去掉 Include conf/extra/httpd-mpm.conf 前面的注釋符號"#"(如果前面有#號的話)
3熊咽、在啟動MPM模塊配置文件后,我們就可以使用文本編輯器打開httpd-mpm.conf配置文件闹丐,在該配置文件中有許多<IfModule>配置節(jié)點(diǎn)横殴,如下圖所示:
4、 此時卿拴,我們就需要根據(jù)當(dāng)前Apache服務(wù)器所使用的MPM模塊(也就是Apache的工作模式)衫仑,來修改對應(yīng)<IfModule>節(jié)點(diǎn)下的參數(shù)配置:
五、mpm_winnt模塊的配置
由于mpm_winnt模塊只會創(chuàng)建1個子進(jìn)程堕花,因此這里對單個子進(jìn)程的參數(shù)設(shè)置就相當(dāng)于對整個Apache的參數(shù)設(shè)置文狱。
<IfModule mpm_winnt_module>
ThreadsPerChild 150 #推薦設(shè)置:小型網(wǎng)站=1000 中型網(wǎng)站=1000~2000 大型網(wǎng)站=2000~3500
MaxRequestsPerChild 3000 #推薦設(shè)置:小型網(wǎng)站=10000 中型或大型網(wǎng)站=20000~100000
</IfModule>
ThreadsPerChild 這個參數(shù)用于設(shè)置每個進(jìn)程的線程數(shù), 子進(jìn)程在啟動時建立這些線程后就不再建立新的線程了。一方面因?yàn)閙pm_winnt不能啟動多個進(jìn)程缘挽,所以這個數(shù)值要足夠大瞄崇,以便可以處理可能的請求高峰; 另一方面該參數(shù)以服務(wù)器的響應(yīng)速度為準(zhǔn)的呻粹,數(shù)目太大的反而會變慢,因此需要綜合均衡一個合理的數(shù)值苏研。
mpm_winnt工作模式下等浊,ThreadsPerChild的默認(rèn)值是64,最大值是1920摹蘑,這里建議設(shè)置為100-500之間筹燕,服務(wù)器性能高的話值大一些,反之值小一些衅鹿。
MaxRequestsPerChild 這個參數(shù)表示每個子進(jìn)程能夠處理的最大請求數(shù)庄萎,即同時間內(nèi)子進(jìn)程數(shù)目,設(shè)置為零表示不限制塘安。
mpm_winnt工作模式下糠涛,MaxRequestsPerChild的默認(rèn)值就是0,官方參考手冊中不建議設(shè)置為0兼犯,主要基于下面兩點(diǎn)考慮:
可以防止內(nèi)存泄漏(偶然的)無限進(jìn)行忍捡,從而耗盡內(nèi)存;
給進(jìn)程一個有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時候減少活動進(jìn)程的數(shù)量切黔。
六砸脊、 mpm_perfork和mpm_worker模塊的配置
1、mpm_perfork模塊
<IfModule mpm_prefork_module>
StartServers 5 #推薦設(shè)置:小型網(wǎng)站=默認(rèn) 中型網(wǎng)站=20~50 大型網(wǎng)站=50~100
MinSpareServers 5 #推薦設(shè)置:與StartServers保持一致
MaxSpareServers 10 #推薦設(shè)置:小型網(wǎng)站=20 中型網(wǎng)站=30~80 大型網(wǎng)站=80~120
MaxClients 150 #推薦設(shè)置:小型網(wǎng)站=500 中型網(wǎng)站=500~1500 大型型網(wǎng)站=1500~3000
MaxRequestsPerChild 0 #推薦設(shè)置:小型網(wǎng)站=10000 中型或大型網(wǎng)站=10000~500000
此外纬霞,還需額外設(shè)置ServerLimit參數(shù)凌埂,該參數(shù)最好與MaxClients的值保持一致。
</IfModule>
2诗芜、mpm_worker模塊
<IfModule mpm_worker_module>
StartServers 2 #推薦設(shè)置:小型網(wǎng)站=默認(rèn) 中型網(wǎng)站=3~5 大型網(wǎng)站=5~10
MaxClients 150 #推薦設(shè)置:小型網(wǎng)站=500 中型網(wǎng)站=500~1500 大型網(wǎng)站=1500~3000
MinSpareThreads 25 #推薦設(shè)置:小型網(wǎng)站=默認(rèn) 中型網(wǎng)站=50~100 大型網(wǎng)站=100~200
MaxSpareThreads 75 #推薦設(shè)置:小型網(wǎng)站=默認(rèn) 中型網(wǎng)站=80~160 大型網(wǎng)站=200~400
ThreadsPerChild 25 #推薦設(shè)置:小型網(wǎng)站=默認(rèn) 中型網(wǎng)站=50~100 大型網(wǎng)站=100~200
MaxRequestsPerChild 0 #推薦設(shè)置:小型網(wǎng)站=10000 中型或大型網(wǎng)站=10000~50000
此外瞳抓,如果MaxClients/ThreadsPerChild大于16,還需額外設(shè)置ServerLimit參數(shù)伏恐,ServerLimit必須大于等于 MaxClients/ThreadsPerChild的值孩哑。
</IfModule>
StartServers 啟動Apache時創(chuàng)建的子進(jìn)程數(shù)。
MinSpareServers 處于空閑狀態(tài)的最小子進(jìn)程數(shù)翠桦。所謂空閑子進(jìn)程是指沒有正在處理請求的子進(jìn)程横蜒,如果當(dāng)前空閑子進(jìn)程數(shù)少于MinSpareServers,那么Apache將以最大每秒一個的速度產(chǎn)生新的子進(jìn)程销凑,只有在非常繁忙機(jī)器上才需要調(diào)整這個參數(shù)丛晌,此值不宜過大。
MaxSpareServers 處于空閑狀態(tài)的最大子進(jìn)程數(shù)斗幼。只有在非常繁忙機(jī)器上才需要調(diào)整這個參數(shù)澎蛛,此值不宜過大,如果你將該指令的值設(shè)置為比MinSpareServers小孟岛,Apache將會自動將其修改成MinSpareServers+1瓶竭。
MaxClients 允許同時連接的最大請求數(shù)量。任何超過MaxClients限制的請求都將進(jìn)入等待隊(duì)列渠羞,直到達(dá)到ListenBacklog指令限制的最大值為止斤贰。
對于非線程型的MPM(mpm_prefork),MaxClients表示可以用于處理客戶端請求的最大子進(jìn)程數(shù)量次询,默認(rèn)值是256荧恍,要增大這個值,你必須同時增大ServerLimit屯吊。
對于線程型或者混合型的MPM(mpm_beos或mpm_worker)送巡,MaxClients表示可以用于處理客戶端請求的最大線程數(shù)量,線程型的mpm_beos的默認(rèn)值是50盒卸,對于混合型的MPM默認(rèn)值是16(ServerLimit)乘以25(ThreadsPerChild)的結(jié)果骗爆。因此要將MaxClients增加到超過16個進(jìn)程才能提供的時候,你必須同時增加ServerLimit的值蔽介。
MinSpareThreads 處于空閑狀態(tài)的最小線程數(shù)摘投。不同的MPM對這個指令的處理是不一樣的,mpm_worker的默認(rèn)值是75虹蓄,這個MPM將基于整個服務(wù)器監(jiān)視空閑線程數(shù)犀呼,如果服務(wù)器中總的空閑線程數(shù)太少,子進(jìn)程將產(chǎn)生新的空閑線程薇组。
MaxSpareThreads 處于空閑狀態(tài)的最大線程數(shù)外臂。不同的MPM對這個指令的處理是不一樣的,mpm_worker的默認(rèn)值是250律胀,這個MPM將基于整個服務(wù)器監(jiān)視空閑線程數(shù)宋光,如果服務(wù)器中總的空閑線程數(shù)太多,子進(jìn)程將殺死多余的空閑線程炭菌。
七跃须、關(guān)于Apache的ServerLimit
ServerLimit表示Apache允許創(chuàng)建的最大進(jìn)程數(shù)。 Apache在編譯時內(nèi)部有一個硬限制ServerLimit 20000(mpm_prefork模塊為ServerLimit 200000)娃兽,你不能超越這個限制菇民。在設(shè)置ServerLimit時需要注意:如果將ServerLimit設(shè)置成一個高出實(shí)際需要許多的值,將會有過多的共享內(nèi)存被分配投储,如果將ServerLimit和MaxClients設(shè)置成超過服務(wù)器的處理能力第练,Apache可能無法啟動,或者系統(tǒng)將變得不穩(wěn)定玛荞。
八娇掏、其他注意事項(xiàng)
在配置相關(guān)參數(shù)時,請先保證服務(wù)器具備足夠的硬件性能(CPU勋眯、內(nèi)存等)婴梧。 如果發(fā)現(xiàn)調(diào)整MPM模塊參數(shù)后下梢,服務(wù)器的內(nèi)存占用不斷增加(甚至滿載),可能是程序中出現(xiàn)了內(nèi)存泄露塞蹭,遇到這種情況請調(diào)低參數(shù)MaxRequestsPerChild的值以降低內(nèi)存泄露帶來的影響孽江,然后盡快找出程序中的問題所在。
————————————————
版權(quán)聲明:本文為CSDN博主「幕塵楓」的原創(chuàng)文章番电,遵循CC 4.0 BY-SA版權(quán)協(xié)議岗屏,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq15577969/article/details/109702961