網站併發量的計算方法

你想建設一個能承受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個請求/秒.net

 

最終結論:線程

若是你的服務器一秒能處理231.4--347.1個請求/秒,就能夠應對平均500萬PV/天天。

若是你的服務器一秒能處理46.2--69.3個請求,就能夠應對平均100萬PV/天天。

 

說明:

這裏說明每秒N個請求,就是QPS。由於我關心的是應用程序處理業務的能力。 

 

實際經驗:

一、根據實際經驗,採用兩臺常規配置的機架式服務器,配置是很常見的配置,例如一個4核CPU+4G內存+服務器SAS硬盤。

二、我的武斷的認爲在服務器CPU領域Intel的CPU要優於AMD的CPU,有反對的就反對吧,我都說我武斷了(請看CPU性能比較),不要太相信AMD的廣告,比較CPU性能簡單辦法就是比價格,不要比頻率與核心數,價格相差很少的性能也相差很少。

三、硬盤的性能很重要,由其是數據庫服務器。通常的服務器都配1.5萬轉的SAS硬盤,高級一點的能夠配SSD固態硬盤,性能會更好。最最最最重要的指標是「隨機讀寫性能」而不是「順序讀寫性能」。(本例仍是配置最多見的1.5萬轉的SAS硬盤吧)

四、一臺服務器跑Tomcat運行j2ee程序,一臺服務器跑MySql數據庫,程序寫的中等水平(這個真的很差量化),是論壇類型的應用(總有回帖,不太容易作緩存,也沒法靜態化)。

五、以上軟硬件狀況下,是能夠承受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(寫、改),而且有倍率關係,由於:
一、數據庫對查詢可能有緩存。
二、機械硬盤或SSD硬盤的讀就是比寫快。 

轉自:https://blog.csdn.net/zhang_xiao8wan8/article/details/45814985

相關文章
相關標籤/搜索