


Apache連接數(shù)設(shè)置
以下為引用的內(nèi)容: <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> |
prefork的工作原理是這樣的:控制進(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)開銷以增加性能。
axSpareServers 設(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配置段。
以下為引用的內(nèi)容: <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ù)。
關(guān)鍵字:Apache、連接數(shù)、進(jìn)程
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解