天天看點

假如想要建設一個能承受500萬PV/每天的網站,伺服器每秒要處理多少個請求才能應對?

假如想要建設一個能承受500萬PV/每天的網站,伺服器每秒要處理多少個請求才能應對?如何計算?

1、PV是什麼:

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

2、計算模型:

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

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

3、簡單計算的結果:

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

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

4、初步結論:

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

5、留足餘量:

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

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

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

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

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

6、最終結論:

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

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

說明:

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

7、實際經驗:

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/每天的。(已留有餘量應對突然的通路高峰)

8、注意機房的網絡帶寬:

有人說以上條件我都滿足了,但實際性能還是達不到目标。這時請注意你對外的網絡的帶寬,在國内伺服器便宜但帶寬很貴,很可能你在機房是與大家共享一條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帶寬也不能滿足要求了。你自已計算吧。

附:性能測試基本概念

一、基本概念:

Throughput(吞吐量):按照正常了解網絡吞吐量表示在機關時間内通過網卡資料量之和,其中即包括本機網卡發送出去的資料量也包括本機網卡接收到的資料量。 一個100Mb(位)的雙工網卡,最大發送資料的速度是12.5M位元組/s,最大接收資料的速度是12.5M位元組/s, 可以同時收發資料。

并發使用者數:是同時執行操作的使用者(線程數)。

響應時間:從請求發出到收到響應花費的時間 。

QPS - Queries Per Second 每秒處理的查詢數(如果是資料庫,就相當于讀取)

TPS - Transactions Per Second 每秒處理的事務數(如果是資料庫,就相當于寫入、修改)

IOPS,每秒磁盤進行的I/O操作次數

例如對某個資料庫測試,分開兩次測QPS與TPS。

QPS(讀取)值總是高于TPS(寫、改),并且有倍率關系,因為:

1、資料庫對查詢可能有緩存。

2、機械硬碟或SSD硬碟的讀就是比寫快。

二、JMeter測試參數說明:

Label:每一個測試單元的名字。

#Samples:表示一個測試單元一共發出了多少個請求。

Average:平均響應時間——預設情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 為機關顯示平均響應時間。,不重要。

Median:中位數,也就是 50% 使用者的響應時間,如果把響應時間從小到大順序排序,那麼50%的請求的響應時間在這個範圍之内。重要。

90% Line:90% 使用者的響應時間,如果把響應時間從小到大順序排序,那麼90%的請求的響應時間在這個範圍之内。重要 。

Min:最小響應時間,不重要。

Max:最大響應時間,出現幾率隻不過是千分之一甚至萬分之一,不重要。

Error%:本次測試中出現錯誤的請求的數量

Throughput:吞吐量——預設情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數

KB/Sec:每秒從伺服器端接收到的資料量(隻是接收),相當于LoadRunner中的Throughput/Sec

三、Apache ab測試參數說明:

RPS:Request per Second,每秒處理的請求數