2012-11-19 28 views
3

我正在運行一個交通密集站點(每天10萬次)。在高峯時間(1500+在線活動)網站得到大幅度減速並增加頁面加載時間。 (圖片)Apache2 - 針對非常高流量網站的ServerLimit,MaxClients,MaxRequestsPerChild的最佳值

我們在同一臺服務器上使用前端+ mysql數據庫。留下足夠的未使用資源。

平均負載:1.47,1.63,1.73 HTOP:http://grabilla.com/02b13-02a8961d-bd7e-404c-9873-06e57bb7eab1.png

服務器配置: E3 1230(4×3.2Ghz的)/ 16GB RAM/1Gbps的端口速度 centoOS 5.8

Apache的配置:

Timeout 150 
KeepAlive Off 
MaxKeepAliveRequests 1000 
KeepAliveTimeout 15 

<IfModule prefork.c> 
StartServers  8 
MinSpareServers 5 
MaxSpareServers 20 
ServerLimit  256 
MaxClients  256 
MaxRequestsPerChild 4000 
</IfModule> 

<IfModule worker.c> 
StartServers   2 
MaxClients   450 
MinSpareThreads  25 
MaxSpareThreads  75 
ThreadsPerChild  25 
MaxRequestsPerChild 0 
</IfModule> 

CPU使用率永遠不會超過2小時的平均負載。 MySQL服務器當時也有7〜15%的使用率。我知道這不是數據庫瓶頸,因爲靜態頁面在繁忙時間也需要很長時間才能加載。

任何提示,以優化這些值將不勝感激,謝謝。

網址:http://goo.gl/XVPAA

+2

如果您試圖優化一段慢速代碼(儘管有人會說它更適合Code Review),但我可以看到這是如何編程的,但調整Apache配置值聽起來更像是服務器故障的問題。 – cjc343

+0

它看起來像你可以通過做一些(相當)基本的網站優化,如設置過期頭,組合圖像精靈,和優化/縮小資源等顯着提高性能。在主頁上,我必須提出60多個請求。隨時由網站上的最大用戶數乘以,並且快速增加。此外,爲了上帝的愛,讓能活下去;不得不爲60個以上的請求打開一個新的連接是瘋狂的。 –

+0

非常感謝您的建議。 –

回答

10

假設你使用Linux與prefork的:打開存留。如果你有不斷的流量增加服務器的數量。降低你的活着時間,這樣你就不會快速飽和你的連接,並增加你每個孩子的請求,所以服務器不會經常重啓。你有很多的RAM,所以儘量最大化你的內存使用率,並減少你的CPU使用率。試試這個起初:

Timeout 150 
KeepAlive On 
MaxKeepAliveRequests 1000 
KeepAliveTimeout 5 

<IfModule prefork.c> 
StartServers  20 
MinSpareServers 20 
MaxSpareServers 30 
ServerLimit  256 
MaxClients  256 
MaxRequestsPerChild 10000 
</IfModule> 

還可以編輯my.conf,增加高速緩存和緩衝區。