Apache增加最大連接數(shù)的方法
更新時(shí)間:2011年02月16日 14:34:38 作者:
增加Apache最大連接數(shù)的方法,需要的朋友可以參考下。
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)默認(rèn)150個(gè)連接數(shù),下面的例子修改為1500個(gè)。
修改httpd.conf文件
找到
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
</IfModule>
修改
MaxClients 150
為
ServerLimit 1500
MaxClients 1500
然后保存退出。
重新啟動(dòng)http服務(wù)(/etc/rc.d/init.d/httpd restart)
每次重做服務(wù)器,就會(huì)學(xué)到一些新的東西,所以了解linux最簡(jiǎn)潔有效的辦法,就是不停的重做系統(tǒng),重新配置優(yōu)化系統(tǒng)(XD!)。
本次使用了apache2.2.6,編譯完成后,最大連接數(shù)默認(rèn)為150,運(yùn)行一段時(shí)間后出現(xiàn)大量的CLOSE_WAIT,于是修改默認(rèn)連接數(shù)。apache2.2以后許多功能都抽出來單獨(dú)存放了,在http.conf里進(jìn)行引用。存儲(chǔ)連接數(shù)等相關(guān)指令的文件是httpd-mpm.conf,apache采用的是prefork模式來進(jìn)行連接數(shù)量方面的控制,prefork模塊的格式如下:
<ifmodule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0<ifmodule>
其工作原理如下:
控制進(jìn)程在最初建立StartServers個(gè)子進(jìn)程后, 為了滿足MinSpareServers設(shè)置的需要,創(chuàng)建一個(gè)進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建第二個(gè),等待一秒鐘,繼而創(chuàng)建四個(gè),如此按指數(shù)級(jí)增加創(chuàng)建的進(jìn)程 數(shù),最多達(dá)到每秒32個(gè),直到滿足MinSpareServers設(shè)置的值為止,這也就是預(yù)派生(prefork)的由來。這種模式可以使得不必在請(qǐng)求到 來時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能。
MaxSpareServers 設(shè)置了最大的空閑進(jìn)程數(shù),如果空閑進(jìn)程數(shù)大于這個(gè)值,Apache會(huì)自動(dòng)kill某些多余進(jìn)程。這個(gè)值一般不要設(shè)的過大,但如果設(shè)的比 MinSpareServers小,Apache會(huì)自動(dòng)把它調(diào)整為MinSpareServers+1。如果站點(diǎn)負(fù)載較大的話,可考慮同時(shí)加大 MinSpareServers和MaxSpareServers。
MaxRequestsPerChild設(shè)置的是每個(gè)子進(jìn)程可以 處理的請(qǐng)求數(shù)。每個(gè)子進(jìn)程在處理了MaxRequestsPerChild個(gè)請(qǐng)求后將自動(dòng)銷毀。0意味著無限,即子進(jìn)程永不銷毀。雖然缺省設(shè)為0可以使每 個(gè)子進(jìn)程處理更多的請(qǐng)求,但如果設(shè)成非零值也有兩點(diǎn)重要的好處:
1. 可防止意外的內(nèi)存卸漏;
2. 在服務(wù)器負(fù)載下降的時(shí)侯會(huì)自動(dòng)減少子進(jìn)程數(shù)。
因此,可根據(jù)服務(wù)器的負(fù)載來調(diào)整這個(gè)值,如果非零的話,筆者認(rèn)為10000左右是比較合適的。事實(shí)上這個(gè)值對(duì)Apache的性能影響不是很大。
MaxClients 是這些指令中最為重要的一個(gè),它設(shè)定的就是Apache可以同時(shí)處理的請(qǐng)求,這是對(duì)Apache性能影響最大的參數(shù).在我個(gè)人看來,缺省的150是遠(yuǎn)遠(yuǎn)不 夠的,如果請(qǐng)求總數(shù)已達(dá)到這個(gè)值(可通過ps –ef|grep httpd|wc –l來確認(rèn)),那么下面的請(qǐng)求就要排隊(duì),直到某個(gè)已處理請(qǐng)求完畢。這就是為什么系統(tǒng)資源還剩下很多,而http訪問卻很慢的主要原因。系統(tǒng)管理員可以根據(jù) 硬件配置和負(fù)載情況來動(dòng)態(tài)調(diào)整這個(gè)值,雖然理論上這個(gè)值越大,可以處理的請(qǐng)求就越多,但Apache默認(rèn)的限制是不能大于256。如果把這個(gè)值設(shè)為大于 256那么Apache將無法起動(dòng)。事實(shí)上,256對(duì)于負(fù)載稍重的站點(diǎn)也是很不夠的。在Apache1.3中這是個(gè)硬限制,如果要加大這個(gè)值,必須在 configure前手工修改源代碼樹下的src/include/httpd.h,查找256,會(huì)發(fā)現(xiàn)#define HARD_SERVER_LIMIT 256這行,把256改為你要增大的值如4000,然后重新編譯Apache即可。我想這個(gè)方法稍有些經(jīng)驗(yàn)的Apache系統(tǒng)管理員都知道,不過我相信在 Apache2.0中知道如何加大這個(gè)值的人就不會(huì)太多了。
在Apache2.0中新加入了ServerLimit指令,使得無須重編譯Apache就可以加大MaxClients。下面是筆者的prefork配置段。
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
BTW: ServerLimit的最大值是20000,這對(duì)于大多數(shù)站點(diǎn)是足夠了,但如果你一定要再加大的話,那么這個(gè)值位于源代碼樹下的server/mpm/prefork/prefork.c中。里面的
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
這兩行就對(duì)應(yīng)著MaxClients和ServerLimit的限制值。 但我相信很少有人可以用到20000的并發(fā)連接數(shù)。
以上內(nèi)容來自u(píng)nix中文 對(duì)于prefork的工作模式能夠?qū)崿F(xiàn)的功能描寫的比較詳盡了。我在用的時(shí)候發(fā)現(xiàn)ServerLimits和MaxClients這兩個(gè)參數(shù)的順序是不可以顛倒的,否則重起apache時(shí)會(huì)報(bào)警。根據(jù)周超 同學(xué)的提醒,凡是有依賴關(guān)系的命令,書寫應(yīng)該都是有順序的。
同時(shí)在查資料的過程中,揀到一條命令:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {[標(biāo)記錯(cuò)誤:for] print a, S[a]}'
這條語句返回結(jié)果如下
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請(qǐng)求數(shù);ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);TIME_WAIT表示處理完畢,等待超時(shí)結(jié)束的請(qǐng)求數(shù)。
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)默認(rèn)150個(gè)連接數(shù),下面的例子修改為1500個(gè)。
修改httpd.conf文件
找到
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
</IfModule>
修改
MaxClients 150
為
ServerLimit 1500
MaxClients 1500
然后保存退出。
重新啟動(dòng)http服務(wù)(/etc/rc.d/init.d/httpd restart)
每次重做服務(wù)器,就會(huì)學(xué)到一些新的東西,所以了解linux最簡(jiǎn)潔有效的辦法,就是不停的重做系統(tǒng),重新配置優(yōu)化系統(tǒng)(XD!)。
本次使用了apache2.2.6,編譯完成后,最大連接數(shù)默認(rèn)為150,運(yùn)行一段時(shí)間后出現(xiàn)大量的CLOSE_WAIT,于是修改默認(rèn)連接數(shù)。apache2.2以后許多功能都抽出來單獨(dú)存放了,在http.conf里進(jìn)行引用。存儲(chǔ)連接數(shù)等相關(guān)指令的文件是httpd-mpm.conf,apache采用的是prefork模式來進(jìn)行連接數(shù)量方面的控制,prefork模塊的格式如下:
<ifmodule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0<ifmodule>
其工作原理如下:
控制進(jìn)程在最初建立StartServers個(gè)子進(jìn)程后, 為了滿足MinSpareServers設(shè)置的需要,創(chuàng)建一個(gè)進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建第二個(gè),等待一秒鐘,繼而創(chuàng)建四個(gè),如此按指數(shù)級(jí)增加創(chuàng)建的進(jìn)程 數(shù),最多達(dá)到每秒32個(gè),直到滿足MinSpareServers設(shè)置的值為止,這也就是預(yù)派生(prefork)的由來。這種模式可以使得不必在請(qǐng)求到 來時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能。
MaxSpareServers 設(shè)置了最大的空閑進(jìn)程數(shù),如果空閑進(jìn)程數(shù)大于這個(gè)值,Apache會(huì)自動(dòng)kill某些多余進(jìn)程。這個(gè)值一般不要設(shè)的過大,但如果設(shè)的比 MinSpareServers小,Apache會(huì)自動(dòng)把它調(diào)整為MinSpareServers+1。如果站點(diǎn)負(fù)載較大的話,可考慮同時(shí)加大 MinSpareServers和MaxSpareServers。
MaxRequestsPerChild設(shè)置的是每個(gè)子進(jìn)程可以 處理的請(qǐng)求數(shù)。每個(gè)子進(jìn)程在處理了MaxRequestsPerChild個(gè)請(qǐng)求后將自動(dòng)銷毀。0意味著無限,即子進(jìn)程永不銷毀。雖然缺省設(shè)為0可以使每 個(gè)子進(jìn)程處理更多的請(qǐng)求,但如果設(shè)成非零值也有兩點(diǎn)重要的好處:
1. 可防止意外的內(nèi)存卸漏;
2. 在服務(wù)器負(fù)載下降的時(shí)侯會(huì)自動(dòng)減少子進(jìn)程數(shù)。
因此,可根據(jù)服務(wù)器的負(fù)載來調(diào)整這個(gè)值,如果非零的話,筆者認(rèn)為10000左右是比較合適的。事實(shí)上這個(gè)值對(duì)Apache的性能影響不是很大。
MaxClients 是這些指令中最為重要的一個(gè),它設(shè)定的就是Apache可以同時(shí)處理的請(qǐng)求,這是對(duì)Apache性能影響最大的參數(shù).在我個(gè)人看來,缺省的150是遠(yuǎn)遠(yuǎn)不 夠的,如果請(qǐng)求總數(shù)已達(dá)到這個(gè)值(可通過ps –ef|grep httpd|wc –l來確認(rèn)),那么下面的請(qǐng)求就要排隊(duì),直到某個(gè)已處理請(qǐng)求完畢。這就是為什么系統(tǒng)資源還剩下很多,而http訪問卻很慢的主要原因。系統(tǒng)管理員可以根據(jù) 硬件配置和負(fù)載情況來動(dòng)態(tài)調(diào)整這個(gè)值,雖然理論上這個(gè)值越大,可以處理的請(qǐng)求就越多,但Apache默認(rèn)的限制是不能大于256。如果把這個(gè)值設(shè)為大于 256那么Apache將無法起動(dòng)。事實(shí)上,256對(duì)于負(fù)載稍重的站點(diǎn)也是很不夠的。在Apache1.3中這是個(gè)硬限制,如果要加大這個(gè)值,必須在 configure前手工修改源代碼樹下的src/include/httpd.h,查找256,會(huì)發(fā)現(xiàn)#define HARD_SERVER_LIMIT 256這行,把256改為你要增大的值如4000,然后重新編譯Apache即可。我想這個(gè)方法稍有些經(jīng)驗(yàn)的Apache系統(tǒng)管理員都知道,不過我相信在 Apache2.0中知道如何加大這個(gè)值的人就不會(huì)太多了。
在Apache2.0中新加入了ServerLimit指令,使得無須重編譯Apache就可以加大MaxClients。下面是筆者的prefork配置段。
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
BTW: ServerLimit的最大值是20000,這對(duì)于大多數(shù)站點(diǎn)是足夠了,但如果你一定要再加大的話,那么這個(gè)值位于源代碼樹下的server/mpm/prefork/prefork.c中。里面的
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
這兩行就對(duì)應(yīng)著MaxClients和ServerLimit的限制值。 但我相信很少有人可以用到20000的并發(fā)連接數(shù)。
以上內(nèi)容來自u(píng)nix中文 對(duì)于prefork的工作模式能夠?qū)崿F(xiàn)的功能描寫的比較詳盡了。我在用的時(shí)候發(fā)現(xiàn)ServerLimits和MaxClients這兩個(gè)參數(shù)的順序是不可以顛倒的,否則重起apache時(shí)會(huì)報(bào)警。根據(jù)周超 同學(xué)的提醒,凡是有依賴關(guān)系的命令,書寫應(yīng)該都是有順序的。
同時(shí)在查資料的過程中,揀到一條命令:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {[標(biāo)記錯(cuò)誤:for] print a, S[a]}'
這條語句返回結(jié)果如下
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請(qǐng)求數(shù);ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);TIME_WAIT表示處理完畢,等待超時(shí)結(jié)束的請(qǐng)求數(shù)。
您可能感興趣的文章:
- jQuery實(shí)現(xiàn)立體式數(shù)字動(dòng)態(tài)增加(animate方法)
- jQuery實(shí)現(xiàn)立體式數(shù)字滾動(dòng)條增加效果
- js實(shí)現(xiàn)增加數(shù)字顯示的環(huán)形進(jìn)度條效果
- JavaScript數(shù)組Array對(duì)象增加和刪除元素方法總結(jié)
- 為jquery的ajaxfileupload增加附加參數(shù)的方法
- php 數(shù)組操作(增加,刪除,查詢,排序)等函數(shù)說明
- MYSQL數(shù)據(jù)庫中的現(xiàn)有表增加新字段(列)
- js簡(jiǎn)單實(shí)現(xiàn)表單中點(diǎn)擊按鈕動(dòng)態(tài)增加輸入框數(shù)量的方法
- jquery對(duì)table中各數(shù)據(jù)的增加、保存、刪除操作示例
- 數(shù)據(jù)庫中兩張表之間的數(shù)據(jù)同步增加、刪除與更新實(shí)現(xiàn)思路
- json數(shù)據(jù)處理技巧(字段帶空格、增加字段、排序等等)
- Jquery中增加參數(shù)與Json轉(zhuǎn)換代碼
- JavaScript實(shí)現(xiàn)數(shù)值自動(dòng)增加動(dòng)畫
- 如何修改apache 2最大連接數(shù)
相關(guān)文章
linux中關(guān)于ftp查看不到文件列表的問題詳解
下面小編就為大家?guī)硪黄猯inux中關(guān)于ftp查看不到文件列表的問題詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11Linux服務(wù)器tomact 8.0啟動(dòng)慢的完美解決方法
這篇文章主要介紹了Linux服務(wù)器tomact 8.0啟動(dòng)慢的完美解決方法,需要的朋友可以參考下2017-08-08apache與iis下讓html格式的頁面也同樣具有shtml的動(dòng)態(tài)解析
apache下讓html格式的頁面也同樣具有shtml的動(dòng)態(tài)解析,方便有此需要的朋友。2011-03-03apache在win2003下的安全設(shè)置(配合文件夾權(quán)限目錄,很好很安全)
眾所周知,在windows下當(dāng)Apache第 一次被安裝為服務(wù)后,它會(huì)以用戶“System”(本地系統(tǒng)賬號(hào))運(yùn)行。如果web服務(wù)器的所有資源都在本地系統(tǒng)上,這樣做會(huì)問題比較少,但是將會(huì)具有很 大的安全 權(quán)限來影響本地機(jī)器,因此千萬不能開啟System帳號(hào)的網(wǎng)絡(luò)權(quán)限2012-01-01