Apache增加最大連接數(shù)的方法
2024-08-27 18:28:03
供稿:網(wǎng)友
MaxClients n
1、apache1.x
n是整數(shù),表示最大連接數(shù),取值范圍在1和256之間,如果要讓apache支持更多的連接數(shù),那么需要修改源碼中的httpd.h文件,編輯/httpd-2.0.59/include/httpd.h中的HARD_SERVER_LIMIT值改大然后再編譯。
增加apache最大連接數(shù)的方法:
在httpd.conf中設(shè)置:
MaxClients n
n是整數(shù),表示最大連接數(shù),取值范圍在1和256之間,如果要讓apache支持更多的連接數(shù),那么需要修改源碼中的httpd.h文件,把定義的HARD_SERVER_LIMIT值改大然后再編譯
2、apache2.x
系統(tǒng)默認150個連接數(shù),下面的例子修改為1500個。
修改httpd.conf文件
找到
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
</IfModule>
修改
MaxClients 150
為
ServerLimit 1500
MaxClients 1500
然后保存退出。
重新啟動http服務(wù)(/etc/rc.d/init.d/httpd restart)
每次重做服務(wù)器,就會學到一些新的東西,所以了解linux最簡潔有效的辦法,就是不停的重做系統(tǒng),重新配置優(yōu)化系統(tǒng)(XD!)。
本次使用了apache2.2.6,編譯完成后,最大連接數(shù)默認為150,運行一段時間后出現(xiàn)大量的CLOSE_WAIT,于是修改默認連接數(shù)。apache2.2以后許多功能都抽出來單獨存放了,在http.conf里進行引用。存儲連接數(shù)等相關(guān)指令的文件是httpd-mpm.conf,apache采用的是prefork模式來進行連接數(shù)量方面的控制,prefork模塊的格式如下:
<ifmodule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0<ifmodule>
其工作原理如下:
控制進程在最初建立StartServers個子進程后, 為了滿足MinSpareServers設(shè)置的需要,創(chuàng)建一個進程,等待一秒鐘,繼續(xù)創(chuàng)建第二個,等待一秒鐘,繼而創(chuàng)建四個,如此按指數(shù)級增加創(chuàng)建的進程 數(shù),最多達到每秒32個,直到滿足MinSpareServers設(shè)置的值為止,這也就是預派生(prefork)的由來。這種模式可以使得不必在請求到 來時再產(chǎn)生新的進程,從而減小了系統(tǒng)開銷以增加性能。
MaxSpareServers 設(shè)置了最大的空閑進程數(shù),如果空閑進程數(shù)大于這個值,Apache會自動kill某些多余進程。這個值一般不要設(shè)的過大,但如果設(shè)的比 MinSpareServers小,Apache會自動把它調(diào)整為MinSpareServers+1。如果站點負載較大的話,可考慮同時加大 MinSpareServers和MaxSpareServers。
MaxRequestsPerChild設(shè)置的是每個子進程可以 處理的請求數(shù)。每個子進程在處理了MaxRequestsPerChild個請求后將自動銷毀。0意味著無限,即子進程永不銷毀。雖然缺省設(shè)為0可以使每 個子進程處理更多的請求,但如果設(shè)成非零值也有兩點重要的好處:
1. 可防止意外的內(nèi)存卸漏;
2. 在服務(wù)器負載下降的時侯會自動減少子進程數(shù)。