如何測試和調(diào)試Apache服務器 |
發(fā)布時間: 2012/8/11 10:34:23 |
Apache是運行在Linux操作系統(tǒng)上的頭號Web服務器。很多小地方都可以用來調(diào)整Apache的性能,并降低它對系統(tǒng)資源的影響。其中一個就是調(diào)整內(nèi)存使用率,當然達到這一目的可能還是需要花點功夫的。
例如,通過ps來確定httpd線程的內(nèi)存使用率,可以輸入下面的命令: #ps-Uapache-uapacheu 上面這段輸出顯示了單個httpd進程使用了50MB的RSS(駐留集大小)內(nèi)存(或者非交換物理內(nèi)存),以及149MB的VSZ(虛擬)內(nèi)存。這當然在很大程度上取決于你在Apache里加載和運行的模塊數(shù)量。這決不是一個固定的數(shù)字。由于這個數(shù)字里還包含了共享庫包,所以不是100%的準確。我們可以認為RSS數(shù)字的一半是httpd線程真正使用的內(nèi)存數(shù),這可能還有點保守,但是離我們的目的已經(jīng)非常接近了。 在本文里,我們假設每個httpd進程都在使用了27MB內(nèi)存。然后,你需要確定可以讓httpd真正使用的內(nèi)存數(shù)。根據(jù)運行在機器上的其他進程,你可能希望要求50%的物理內(nèi)存都供Apache使用。在一個裝有1GB內(nèi)存的系統(tǒng)上,就有512MB的內(nèi)存可以被劃分為多個27MB的內(nèi)存,也就是大約19個并發(fā)的httpd內(nèi)存。有些人堅持認為每個httpd線程“真正”使用大約5MB的內(nèi)存,所以從理論上講你可以把512MB的內(nèi)存劃分出102個并發(fā)進程供Apache使用(要記住的是,除非你的網(wǎng)站需要極其巨大的流量,否則這種情況是非常罕見的)。 在默認狀態(tài)下,Apache會分配最大256個并發(fā)客戶端連接,或者256個進程(每一個都對應一個請求)。按照這種設置,一個流量巨大的網(wǎng)站會在頃刻間崩潰(即使你假設每個進程占用5MB內(nèi)存,那也需要1.3GB的內(nèi)存來滿足請求的數(shù)量)。如果不采取其它措施,系統(tǒng)會通過硬盤來嘗試使用交換空間以處理它無法在物理內(nèi)存中完成的任務。 其他可以調(diào)整的項目包括KeepAlive、KeepAliveTimeout和MaxKeepAliveRequests等設置。可以放在httpd.conf文件里的推薦設置有: ServerLimit128MaxClients128KeepAliveOnKeepAliveTimeout2MaxKeepAliveRequests100 當然,如果沒有真正的測試在背后支持,數(shù)字就是毫無意義的,這就是ab的作用之所在。使用ab對Apache配置文件(MaxClients等于256、ServerLimit等于256、KeepAliveTimeout等于15)進行調(diào)整,使其能夠滿足1000個請求(100個連續(xù)請求并發(fā)產(chǎn)生)的調(diào)整方法如下。(在執(zhí)行測試的時候要確保服務器上有一個終端打開以觀察系統(tǒng)的負載。) $ab-n1000-c100-khttp://yoursite.com/index.php 在這里的測試中,不同的設置導致執(zhí)行所消耗的時間產(chǎn)生了一倍的差距(分別為27.8s和16.8s),但是負載的平均值為0.03和0.30。這可能會使得你的網(wǎng)站變得稍慢,但是會確保它不會在高負載的情況下崩潰。還要記住的是,你將需要進行多次測試,以便取得一個平均值。 使用ab是測試調(diào)整Apache配置的一個極佳方法,應該在你每次做出影響性能的更改時使用它。 本文出自:億恩科技【1tcdy.com】 |