天天看點

你想建設一個能承受500萬PV/每天的網站嗎?如果計算呢?

作者:趙磊

你想建設一個能承受500萬PV/每天的網站嗎? 500萬PV是什麼概念?伺服器每秒要處理多少個請求才能應對?如果計算呢? 

PV是什麼:

PV是page view的簡寫。PV是指頁面的通路次數,每打開或重新整理一次頁面,就算做一個pv。 

計算模型: 

每台伺服器每秒處理請求的數量=((80%*總PV量)/(24小時*60分*60秒*40%)) / 伺服器數量 。

其中關鍵的參數是80%、40%。表示一天中有80%的請求發生在一天的40%的時間内。24小時的40%是9.6小時,有80%的請求發生一天的9.6個小時當中(很适合網際網路的應用,白天請求多,晚上請求少)。 

簡單計算的結果:

((80%*500萬)/(24小時*60分*60秒*40%))/1 = 115.7個請求/秒 

((80%*100萬)/(24小時*60分*60秒*40%))/1 = 23.1個請求/秒 

初步結論: 

現在我們在做壓力測試時,就有了标準,如果你的伺服器一秒能處理115.7個請求,就可以承受500萬PV/每天。如果你的伺服器一秒能處理23.1個請求,就可以承受100萬PV/每天。

留足餘量:

以上請求數量是均勻的分布在白天的9.6個小時中,但實際情況并不會這麼均勻的分布,會有高峰有低谷。為了應對高峰時段,應該留一些餘地,最少也要x2倍,x3倍也不為過。

115.7個請求/秒 *2倍=231.4個請求/秒

115.7個請求/秒 *3倍=347.1個請求/秒

23.1個請求/秒 *2倍=46.2個請求/秒

23.1個請求/秒 *3倍=69.3個請求/秒

最終結論:

如果你的伺服器一秒能處理231.4--347.1個請求/秒,就可以應對平均500萬PV/每天。

如果你的伺服器一秒能處理46.2--69.3個請求,就可以應對平均100萬PV/每天。

說明:

這裡說明每秒N個請求,就是QPS。因為我關心的是應用程式處理業務的能力。 

實際經驗:

1、根據實際經驗,采用兩台正常配置的機架式伺服器,配置是很常見的配置,例如一個4核CPU+4G記憶體+伺服器SAS硬碟。

2、個人武斷的認為在伺服器CPU領域Intel的CPU要優于AMD的CPU,有反對的就反對吧,我都說我武斷了(請看​​CPU性能比較​​),不要太相信AMD的廣告,比較CPU性能簡單辦法就是比價格,不要比頻率與核心數,價格相差不多的性能也相差不多。

3、硬碟的性能很重要,由其是資料庫伺服器。一般的伺服器都配1.5萬轉的SAS硬碟,進階一點的可以配SSD固态硬碟,性能會更好。最最最最重要的名額是“随機讀寫性能”而不是“順序讀寫性能”。(本例還是配置最常見的1.5萬轉的SAS硬碟吧)

4、一台伺服器跑Tomcat運作j2ee程式,一台伺服器跑MySql資料庫,程式寫的中等水準(這個真的不好量化),是論壇類型的應用(總有回帖,不太容易做緩存,也無法靜态化)。

5、以上軟硬體情況下,是可以承受100萬PV/每天的。(已留有餘量應對突然的通路高峰)

注意機房的網絡帶寬:

有人說以上條件我都滿足了,但實際性能還是達不到目标。這時請注意你對外的網絡的帶寬,在國内伺服器便宜但帶寬很貴,很可能你在機房是與大家共享一條100M的光纖,實際每個人可分到2M左右帶寬。再好一點5M,再好一點雙線機房10M獨享,這已經很貴了(北京價格)。

一天總流量:每個頁面20k位元組*100萬個頁面/1024=19531M位元組=19G位元組,

19531M/9.6小時=2034M/小時=578K位元組/s   如果請求是均勻分布的,需要5M(640K位元組)帶寬(5Mb=640KB 注意大小寫,b是位,B是位元組,差了8倍),但所有請求不可能是均勻分布的,當有高峰時5M帶寬一定不夠,X2倍就是10M帶寬。10M帶寬基本可以滿足要求。

以上是假設每個頁面20k位元組,基本不包含圖檔,要是包含圖檔就更大了,10M帶寬也不能滿足要求了。你自已計算吧。

(全文完)