


如何使用Apache降低系統(tǒng)資源使用率
Apache是運(yùn)行在Linux操作系統(tǒng)上的頭號(hào)Web服務(wù)器。很多小地方都可以用來(lái)調(diào)整Apache的性能,并降低它對(duì)系統(tǒng)資源的影響。其中一個(gè)就是調(diào)整內(nèi)存使用率,當(dāng)然達(dá)到這一目的可能還是需要花點(diǎn)功夫的。
例如,通過(guò)ps來(lái)確定httpd線(xiàn)程的內(nèi)存使用率,可以輸入下面的命令:
# ps -U apache -u apache u
USERPID %CPU %MEMVSZRSS TTYSTAT START TIME COMMAND
apache130670.05.3 149704 54504 ?SOct071:53 /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DAPACHE2
上面這段輸出顯示了單個(gè)httpd進(jìn)程使用了50 MB的RSS(駐留集大小)內(nèi)存(或者非交換物理內(nèi)存),以及149 MB的VSZ(虛擬)內(nèi)存。這當(dāng)然在很大程度上取決于你在Apache里加載和運(yùn)行的模塊數(shù)量。這決不是一個(gè)固定的數(shù)字。由于這個(gè)數(shù)字里還包含了共享庫(kù)包,所以不是100%的準(zhǔn)確。我們可以認(rèn)為RSS數(shù)字的一半是httpd線(xiàn)程真正使用的內(nèi)存數(shù),這可能還有點(diǎn)保守,但是離我們的目的已經(jīng)非常接近了。
在本文里,我們假設(shè)每個(gè)httpd進(jìn)程都在使用了27 MB內(nèi)存。然后,你需要確定可以讓httpd真正使用的內(nèi)存數(shù)。根據(jù)運(yùn)行在機(jī)器上的其他進(jìn)程,你可能希望要求50%的物理內(nèi)存都供Apache使用。在一個(gè)裝有1GB內(nèi)存的系統(tǒng)上,就有512MB的內(nèi)存可以被劃分為多個(gè)27MB的內(nèi)存,也就是大約19個(gè)并發(fā)的httpd內(nèi)存。有些人堅(jiān)持認(rèn)為每個(gè)httpd 線(xiàn)程“真正”使用大約5MB的內(nèi)存,所以從理論上講你可以把512MB的內(nèi)存劃分出102個(gè)并發(fā)進(jìn)程供Apache使用(要記住的是,除非你的網(wǎng)站需要極其巨大的流量,否則這種情況是非常罕見(jiàn)的)。
在默認(rèn)狀態(tài)下,Apache會(huì)分配最大256個(gè)并發(fā)客戶(hù)端連接,或者256個(gè)進(jìn)程(每一個(gè)都對(duì)應(yīng)一個(gè)請(qǐng)求)。按照這種設(shè)置,一個(gè)流量巨大的網(wǎng)站會(huì)在頃刻間崩潰(即使你假設(shè)每個(gè)進(jìn)程占用5MB內(nèi)存,那也需要1.3GB的內(nèi)存來(lái)滿(mǎn)足請(qǐng)求的數(shù)量)。如果不采取其它措施,系統(tǒng)會(huì)通過(guò)硬盤(pán)來(lái)嘗試使用交換空間以處理它無(wú)法在物理內(nèi)存中完成的任務(wù)。
其他可以調(diào)整的項(xiàng)目包括KeepAlive、KeepAliveTimeout和MaxKeepAliveRequests等設(shè)置。可以放在httpd.conf文件里的推薦設(shè)置有:
ServerLimit 128MaxClients 128KeepAlive OnKeepAliveTimeout 2MaxKeepAliveRequests 100
通過(guò)將KeepAliveTimeout從15秒減到2秒,可以增加MaxClients命令;19太小,而128要好得多。通過(guò)減少進(jìn)程存活的秒數(shù),你可以在相同的時(shí)間內(nèi)允許更多的連接。
當(dāng)然,如果沒(méi)有真正的測(cè)試在背后支持,數(shù)字就是毫無(wú)意義的,這就是ab的作用之所在。使用ab對(duì)Apache配置文件(MaxClients等于256、ServerLimit等于256、KeepAliveTimeout等于15)進(jìn)行調(diào)整,使其能夠滿(mǎn)足1000個(gè)請(qǐng)求(100個(gè)連續(xù)請(qǐng)求并發(fā)產(chǎn)生)的調(diào)整方法如下。(在執(zhí)行測(cè)試的時(shí)候要確保服務(wù)器上有一個(gè)終端打開(kāi)以觀(guān)察系統(tǒng)的負(fù)載。)
$ ab -n 1000 -c 100 -k http://yoursite.com/index.php
現(xiàn)在把上面的服務(wù)器設(shè)置改為更加保守的設(shè)置,重新啟動(dòng)Apache,試著再次測(cè)試(總是從遠(yuǎn)程計(jì)算機(jī)上進(jìn)行,而不是本機(jī))。
在這里的測(cè)試中,不同的設(shè)置導(dǎo)致執(zhí)行所消耗的時(shí)間產(chǎn)生了一倍的差距(分別為27.8s和16.8s),但是負(fù)載的平均值為0.03和0.30。這可能會(huì)使得你的網(wǎng)站變得稍慢,但是會(huì)確保它不會(huì)在高負(fù)載的情況下崩潰。還要記住的是,你將需要進(jìn)行多次測(cè)試,以便取得一個(gè)平均值。
使用ab是測(cè)試調(diào)整Apache配置的一個(gè)極佳方法,應(yīng)該在你每次做出影響性能的更改時(shí)使用它。
關(guān)鍵字:Apache 降低 系統(tǒng)資源 使用率
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶(hù)
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶(hù)的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)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ī)則詳解