IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)服務(wù)器WEB服務(wù)器 → 談?wù)凙pache的優(yōu)化

談?wù)凙pache的優(yōu)化

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

今天說(shuō)說(shuō)Apache的優(yōu)化。為什么要優(yōu)化?因?yàn)榉⻊?wù)器資源不夠用。資源有很多方面,但根據(jù)木桶理論,只要有一種資源不夠用,整個(gè)服務(wù)器的性能就會(huì)受到影響(所謂瓶頸)。

服務(wù)器資源

那么服務(wù)器的資源包括哪些?對(duì)于網(wǎng)站來(lái)說(shuō)主要是CPU、TCP連接數(shù)這兩者。 CPU表現(xiàn)在任務(wù)數(shù)上,在Linux下使用平均負(fù)載(loadavg)來(lái)衡量?赏ㄟ^(guò)以下命令來(lái)查看(參考這篇文章):

cat /proc/loadavg

對(duì)于單CPU的服務(wù)器,loadavg高于1,表明任務(wù)隊(duì)列出現(xiàn)了等待,CPU忙不過(guò)來(lái)了。超過(guò)2以上就會(huì)明顯感到性能降低了。

TCP連接數(shù)可通過(guò)以下命令查看:
netstat -ant | grep :80 | wc -l

如果要實(shí)時(shí)監(jiān)控服務(wù)器資源,可參考OpenNMS項(xiàng)目。

注1:內(nèi)存不算,低廉的價(jià)格使得網(wǎng)站服務(wù)器很少有因?yàn)閮?nèi)存不夠而down掉的。
注2:CPU%是瞬時(shí)的CPU使用率,通常無(wú)法反映出整體負(fù)載。

Apache配置命令

Apache在資源方面的配置命令主要有以下幾條。

KeepAlive 是否允許持續(xù)連接
MaxKeepAliveRequests 允許的持續(xù)連接的最大數(shù)
KeepAliveTimeout 持續(xù)連接在沒(méi)有請(qǐng)求多少秒后切斷
StartServers 最初啟動(dòng)時(shí)啟動(dòng)多少個(gè)服務(wù)器進(jìn)程
MinSpareServers 空閑服務(wù)器進(jìn)程的最小數(shù)
MaxSpareServers 空閑服務(wù)器進(jìn)程的最大數(shù)
MaxRequestsPerChild 每個(gè)子進(jìn)程處理的最大請(qǐng)求數(shù)

KeepAlive

前三個(gè)KeepAlive相關(guān)的指令用來(lái)設(shè)置持續(xù)連接。通常都是每個(gè)HTTP請(qǐng)求對(duì)應(yīng)一個(gè)TCP連接,但對(duì)于一個(gè)包含許多圖片的網(wǎng)頁(yè)來(lái)說(shuō),客戶端會(huì)在瞬間發(fā)出多個(gè)HTTP請(qǐng)求,此時(shí)多次建立TCP連接會(huì)大大降低響應(yīng)速度。此時(shí)通過(guò)持續(xù)連接,可以允許用戶在一個(gè)TCP連接中發(fā)出多個(gè)HTTP請(qǐng)求,減少TCP連接建立次數(shù),提高響應(yīng)速度。

這種情況下,應(yīng)當(dāng)通過(guò)access_log統(tǒng)計(jì)出連續(xù)HTTP請(qǐng)求出現(xiàn)的次數(shù)、間隔時(shí)間、訪問(wèn)量,以確定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小發(fā)揮不了持續(xù)連接的作用;太大了,持續(xù)連接遲遲不斷,浪費(fèi)TCP連接數(shù)不說(shuō),更糟糕的是系統(tǒng)中的 httpd 進(jìn)程數(shù)目會(huì)因此不斷增加,使得系統(tǒng)負(fù)載升高,甚至?xí)䦟?dǎo)致服務(wù)器失去響應(yīng)。

但是在處理動(dòng)態(tài)網(wǎng)頁(yè)請(qǐng)求時(shí),由于用戶很少會(huì)瞬間請(qǐng)求多個(gè)動(dòng)態(tài)網(wǎng)頁(yè)(一般都是打開(kāi)頁(yè)面之后閱讀好半天才點(diǎn)下一頁(yè)),此時(shí)打開(kāi)KeepAlive無(wú)異于浪費(fèi)TCP連接數(shù)。

結(jié)論就是,放動(dòng)態(tài)網(wǎng)頁(yè)的就 KeepAlive Off 以提高吞吐量,放靜態(tài)內(nèi)容如圖片、js代碼等就 KeepAlive On 以減少TCP連接建立次數(shù)。

但一個(gè)Apache只能有一種 KeepAlive 設(shè)置,怎么辦?很簡(jiǎn)單,弄兩臺(tái)服務(wù)器,一個(gè)專門放腳本,一個(gè)專門放圖片。

服務(wù)器進(jìn)程數(shù)

再說(shuō)說(shuō)下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改,因?yàn)锳pache會(huì)自動(dòng)調(diào)節(jié)子進(jìn)程數(shù)。 MinSpareServers和MaxSpareServers是空閑子進(jìn)程數(shù)目,何為空閑子進(jìn)程?假設(shè)某一時(shí)刻系統(tǒng)中共有30個(gè)httpd進(jìn)程,其中一個(gè)是父進(jìn)程,20個(gè)在處理請(qǐng)求,那么空閑子進(jìn)程數(shù)就是9個(gè)。

空閑進(jìn)程少了,大量的突發(fā)請(qǐng)求會(huì)使服務(wù)器疲于進(jìn)程創(chuàng)建,降低效率;而太多反而會(huì)增加系統(tǒng)進(jìn)程數(shù),增大系統(tǒng)負(fù)載。

實(shí)際上,默認(rèn)值已足夠處理一般的突發(fā)請(qǐng)求,所以除非是流量特別特別巨大的網(wǎng)站,否則不要修改這些設(shè)置。

就算流量特別特別大,也是通過(guò)負(fù)載平衡系統(tǒng)來(lái)降低每臺(tái)服務(wù)器的訪問(wèn)量,不會(huì)修改這幾個(gè)值。

MaxRequestsPerChild

這個(gè)值設(shè)置子進(jìn)程在處理多少個(gè)請(qǐng)求之后自動(dòng)結(jié)束。這個(gè)選項(xiàng)是用來(lái)防止進(jìn)程由于內(nèi)存泄漏等使用內(nèi)存過(guò)多。一般默認(rèn)值即可。

總結(jié)

說(shuō)來(lái)說(shuō)去其實(shí)最重要的還是 KeepAlive 的設(shè)置,而性能調(diào)節(jié)也就是調(diào)整 KeepAlive、KeepAliveTimeout 值。

關(guān)鍵詞標(biāo)簽:Apache

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈IIS6.0下配置MySQL+PHP5+Zend+phpMyAdminIIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻win2000server IIS和tomcat5多站點(diǎn)配置win2000server IIS和tomcat5多站點(diǎn)配置

相關(guān)下載

人氣排行 XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法Server Application Unavailable的解決辦法如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù)報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)Windows Server 2003的Web接口