你想建設一個能承受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。由於我關心的是應用程序處理業務的能力。
實際經驗:數據庫
注意機房的網絡帶寬:
有人說以上條件我都知足了,但實際性能仍是達不到目標。這時請注意你對外的網絡的帶寬,在國內服務器便宜但帶寬很貴,極可能你在機房是與你們共享一條100M的光纖,實際每一個人可分到2M左右帶寬。再好一點5M,再好一點雙線機房10M獨享,這已經很貴了(北京價格)。
一天總流量:每一個頁面20k字節緩存
QPS - Queries Per Second 每秒處理的查詢數(若是是數據庫,就至關於讀取)
TPS - Transactions Per Second 每秒處理的事務數(若是是數據庫,就至關於寫入、修改)
IOPS,每秒磁盤進行的I/O操做次數服務器
例如對某個數據庫測試,分開兩次測QPS與TPS。
QPS(讀取)值老是高於TPS(寫、改),而且有倍率關係,由於:
一、數據庫對查詢可能有緩存。
二、機械硬盤或SSD硬盤的讀就是比寫快。網絡
JMeter測試參數說明:
Label:每個測試單元的名字。架構
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併發
轉載留做備份性能