1. 程式人生 > >網站併發量的計算

網站併發量的計算

你想建設一個能承受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。因為我關心的是應用程式處理業務的能力。 

OPS=併發量/平均相應時間

併發量=OPS*平均相應時間

實際經驗:

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頻寬也不能滿足要求了。你自已計算吧。

(全文完)

附:效能測試基本概念
--------------------------------------------------------------------------------------- 
基本概念: 
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硬碟的讀就是比寫快。