你想建设一个能承受500万PV/每天的网站吗?如果计算呢?
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
作者:趙磊
博客:http://elf8848.iteye.com
?
你想建設(shè)一個能承受500萬PV/每天的網(wǎng)站嗎? 500萬PV是什么概念?服務(wù)器每秒要處理多少個請求才能應(yīng)對?如果計(jì)算呢??
PV是什么:
PV是page view的簡寫。PV是指頁面的訪問次數(shù),每打開或刷新一次頁面,就算做一個pv。?
計(jì)算模型:?
每臺服務(wù)器每秒處理請求的數(shù)量=((80%*總PV量)/(24小時*60分*60秒*40%)) / 服務(wù)器數(shù)量 。
其中關(guān)鍵的參數(shù)是80%、40%。表示一天中有80%的請求發(fā)生在一天的40%的時間內(nèi)。24小時的40%是9.6小時,有80%的請求發(fā)生一天的9.6個小時當(dāng)中(很適合互聯(lián)網(wǎng)的應(yīng)用,白天請求多,晚上請求少)。?
?
簡單計(jì)算的結(jié)果:
((80%*500萬)/(24小時*60分*60秒*40%))/1 = 115.7個請求/秒?
((80%*100萬)/(24小時*60分*60秒*40%))/1 = 23.1個請求/秒?
初步結(jié)論:?
現(xiàn)在我們在做壓力測試時,就有了標(biāo)準(zhǔn),如果你的服務(wù)器一秒能處理115.7個請求,就可以承受500萬PV/每天。如果你的服務(wù)器一秒能處理23.1個請求,就可以承受100萬PV/每天。
?
留足余量:
以上請求數(shù)量是均勻的分布在白天的9.6個小時中,但實(shí)際情況并不會這么均勻的分布,會有高峰有低谷。為了應(yīng)對高峰時段,應(yīng)該留一些余地,最少也要x2倍,x3倍也不為過。
115.7個請求/秒?*2倍=231.4個請求/秒
115.7個請求/秒?*3倍=347.1個請求/秒
23.1個請求/秒?*2倍=46.2個請求/秒
23.1個請求/秒?*3倍=69.3個請求/秒
?
最終結(jié)論:
如果你的服務(wù)器一秒能處理231.4--347.1個請求/秒,就可以應(yīng)對平均500萬PV/每天。
如果你的服務(wù)器一秒能處理46.2--69.3個請求,就可以應(yīng)對平均100萬PV/每天。
?
說明:
這里說明每秒N個請求,就是QPS。因?yàn)槲谊P(guān)心的是應(yīng)用程序處理業(yè)務(wù)的能力。?
?
實(shí)際經(jīng)驗(yàn):
1、根據(jù)實(shí)際經(jīng)驗(yàn),采用兩臺常規(guī)配置的機(jī)架式服務(wù)器,配置是很常見的配置,例如一個4核CPU+4G內(nèi)存+服務(wù)器SAS硬盤。
2、個人武斷的認(rèn)為在服務(wù)器CPU領(lǐng)域Intel的CPU要優(yōu)于AMD的CPU,有反對的就反對吧,我都說我武斷了(請看CPU性能比較),不要太相信AMD的廣告,比較CPU性能簡單辦法就是比價格,不要比頻率與核心數(shù),價格相差不多的性能也相差不多。
3、硬盤的性能很重要,由其是數(shù)據(jù)庫服務(wù)器。一般的服務(wù)器都配1.5萬轉(zhuǎn)的SAS硬盤,高級一點(diǎn)的可以配SSD固態(tài)硬盤,性能會更好。最最最最重要的指標(biāo)是“隨機(jī)讀寫性能”而不是“順序讀寫性能”。(本例還是配置最常見的1.5萬轉(zhuǎn)的SAS硬盤吧)
4、一臺服務(wù)器跑Tomcat運(yùn)行j2ee程序,一臺服務(wù)器跑MySql數(shù)據(jù)庫,程序?qū)懙闹械人?這個真的不好量化),是論壇類型的應(yīng)用(總有回帖,不太容易做緩存,也無法靜態(tài)化)。
5、以上軟硬件情況下,是可以承受100萬PV/每天的。(已留有余量應(yīng)對突然的訪問高峰)
?
注意機(jī)房的網(wǎng)絡(luò)帶寬:
有人說以上條件我都滿足了,但實(shí)際性能還是達(dá)不到目標(biāo)。這時請注意你對外的網(wǎng)絡(luò)的帶寬,在國內(nèi)服務(wù)器便宜但帶寬很貴,很可能你在機(jī)房是與大家共享一條100M的光纖,實(shí)際每個人可分到2M左右?guī)挕T俸靡稽c(diǎn)5M,再好一點(diǎn)雙線機(jī)房10M獨(dú)享,這已經(jīng)很貴了(北京價格)。
一天總流量:每個頁面20k字節(jié)*100萬個頁面/1024=19531M字節(jié)=19G字節(jié),
19531M/9.6小時=2034M/小時=578K字節(jié)/s ? 如果請求是均勻分布的,需要5M(640K字節(jié))帶寬(5Mb=640KB 注意大小寫,b是位,B是字節(jié),差了8倍),但所有請求不可能是均勻分布的,當(dāng)有高峰時5M帶寬一定不夠,X2倍就是10M帶寬。10M帶寬基本可以滿足要求。
以上是假設(shè)每個頁面20k字節(jié),基本不包含圖片,要是包含圖片就更大了,10M帶寬也不能滿足要求了。你自已計(jì)算吧。
(全文完)
?
?
?
附:性能測試基本概念
---------------------------------------------------------------------------------------?
基本概念:?
Throughput(吞吐量):按照常規(guī)理解網(wǎng)絡(luò)吞吐量表示在單位時間內(nèi)通過網(wǎng)卡數(shù)據(jù)量之和,其中即包括本機(jī)網(wǎng)卡發(fā)送出去的數(shù)據(jù)量也包括本機(jī)網(wǎng)卡接收到的數(shù)據(jù)量。 一個100Mb(位)的雙工網(wǎng)卡,最大發(fā)送數(shù)據(jù)的速度是12.5M字節(jié)/s ,?最大接收數(shù)據(jù)的速度是12.5M字節(jié)/s,?可以?同時?收發(fā)?數(shù)據(jù)。?
并發(fā)用戶數(shù):是同時執(zhí)行操作的用戶(線程數(shù))。?
響應(yīng)時間:從請求發(fā)出到收到響應(yīng)花費(fèi)的時間 。
QPS?- Queries Per Second??每秒處理的查詢數(shù)(如果是數(shù)據(jù)庫,就相當(dāng)于讀取)
TPS?- Transactions Per Second??每秒處理的事務(wù)數(shù)(如果是數(shù)據(jù)庫,就相當(dāng)于寫入、修改)
IOPS,每秒磁盤進(jìn)行的I/O操作次數(shù)
例如對某個數(shù)據(jù)庫測試,分開兩次測QPS與TPS。
QPS(讀取)值總是高于TPS(寫、改),并且有倍率關(guān)系,因?yàn)?#xff1a;
1、數(shù)據(jù)庫對查詢可能有緩存。
2、機(jī)械硬盤或SSD硬盤的讀就是比寫快。?
---------------------------------------------------------------------------------------?
JMeter測試參數(shù)說明:?
Label:每一個測試單元的名字。?
#Samples:表示一個測試單元一共發(fā)出了多少個請求。?
Average:平均響應(yīng)時間——默認(rèn)情況下是單個 Request 的平均響應(yīng)時間,當(dāng)使用了 Transaction Controller 時,也可以以Transaction 為單位顯示平均響應(yīng)時間。,不重要。?
Median:中位數(shù),也就是 50% 用戶的響應(yīng)時間,如果把響應(yīng)時間從小到大順序排序,那么50%的請求的響應(yīng)時間在這個范圍之內(nèi)。重要。?
90% Line:90% 用戶的響應(yīng)時間,如果把響應(yīng)時間從小到大順序排序,那么90%的請求的響應(yīng)時間在這個范圍之內(nèi)。重要?。?
Min:最小響應(yīng)時間,不重要。?
Max:最大響應(yīng)時間,出現(xiàn)幾率只不過是千分之一甚至萬分之一,不重要。?
Error%:本次測試中出現(xiàn)錯誤的請求的數(shù)量?
Throughput:吞吐量——默認(rèn)情況下表示每秒完成的請求數(shù)(Request per Second),當(dāng)使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數(shù)?
KB/Sec:每秒從服務(wù)器端接收?到的數(shù)據(jù)量(只是接收),相當(dāng)于LoadRunner中的Throughput/Sec?
---------------------------------------------------------------------------------------?
loadrunner測試參數(shù)說明:?
響應(yīng)時間:?取90%值,如果把響應(yīng)時間從小到大順序排序,那么90%的請求的響應(yīng)時間在這個范圍之內(nèi)。重要。?
每秒點(diǎn)擊數(shù)?:hits per Second,每秒鐘向服務(wù)器提交請求的數(shù)量。?
TPS:?Transaction per Second ,每秒事務(wù)數(shù),一個事務(wù)是指一個客戶機(jī)向服務(wù)器發(fā)送請求然后服務(wù)器做出反應(yīng)的過程?
Throughput(吞吐量):?Loadrunner記錄的Throughput是接收到服務(wù)器返回的所有字節(jié)數(shù)之和,與本地發(fā)出的字節(jié)數(shù)無關(guān)。?
Throughput/Sec:?每秒的吞吐量。?
對于BS架構(gòu)的一般分析 響應(yīng)時間、點(diǎn)擊率、吞吐量、TPS(每秒事務(wù)數(shù))。?
對于CS架構(gòu)的一般分析 TPS(每秒事務(wù)數(shù))?
---------------------------------------------------------------------------------------?
Apache ab測試參數(shù)說明:?
RPS:?Request per Second,每秒處理的請求數(shù)?
詳見:?
http://blog.chinaunix.net/u3/108043/showart_2260477.html
轉(zhuǎn)載于:https://my.oschina.net/ydsakyclguozi/blog/387751
總結(jié)
以上是生活随笔為你收集整理的你想建设一个能承受500万PV/每天的网站吗?如果计算呢?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。