前幾天聊過(guò),pv 和并發(fā) 的概念,也大概解釋了 并發(fā),帶寬等指標(biāo)的計(jì)算。感興趣的朋友,可以看看我前面那篇文章:《聊一聊PV和并發(fā)》。今天再來(lái)聊一聊網(wǎng)上商城系統(tǒng)網(wǎng)站容量預(yù)估。
電商公司的朋友,,這樣的場(chǎng)景是否似曾相識(shí):
運(yùn)營(yíng)和產(chǎn)品神秘兮兮的跑過(guò)來(lái)問:
我們晚上要做搞個(gè)促銷,服務(wù)器能抗住么?如果扛不住,需要加多少臺(tái)機(jī)器?
于是,技術(shù)一臉懵逼。
其實(shí),這些都是獨(dú)立商城網(wǎng)站系統(tǒng)容量預(yù)估的問題,容量預(yù)估是架構(gòu)師必備的技能之一。所謂,容量預(yù)估其實(shí)說(shuō)白了就是,系統(tǒng)在down掉之前,所能承受的最大流量。這個(gè)事技術(shù)人員對(duì)于系統(tǒng)性能了解的重要指標(biāo)。常見的容量評(píng)估包括流量、并發(fā)量、帶寬、CPU,內(nèi)存 ,磁盤等一系列內(nèi)容。今天就來(lái)聊一聊容量預(yù)估的問題。
一,幾個(gè)重要參數(shù)
QPS:
每秒鐘處理的請(qǐng)求數(shù)。
并發(fā)量: 系統(tǒng)同時(shí)處理的請(qǐng)求數(shù)l;
響應(yīng)時(shí)間: 一般取平均響應(yīng)時(shí)間;
很多人經(jīng)常會(huì)把并發(fā)數(shù)和QPS 混淆,理解了上面三個(gè)要素的意義之后,就能推算出它們之間的關(guān)系:QPS = 并發(fā)量 / 平均響應(yīng)時(shí)間
二,容量評(píng)估的步驟與方法
1:預(yù)估總訪問量
如何知道總訪問量?對(duì)于一個(gè)運(yùn)營(yíng)活動(dòng)的訪問量評(píng)估,或者一個(gè)系統(tǒng)上線后PV的評(píng)估,有什么好的方法?
最簡(jiǎn)單的辦法就是:詢問業(yè)務(wù)方,詢問運(yùn)營(yíng)同學(xué),詢問產(chǎn)品同學(xué),看產(chǎn)品和運(yùn)營(yíng)對(duì)此次活動(dòng)的流量預(yù)估。
不過(guò),業(yè)務(wù)方對(duì)于流量的預(yù)估,應(yīng)該就兩個(gè)指標(biāo),pv 和 用戶訪問數(shù)。技術(shù)人員 需要更具這兩個(gè)數(shù)據(jù),計(jì)算其他相關(guān)指標(biāo),比如 QPS 等。具體如何計(jì)算可參照我前面一篇 pv和并發(fā) 的文章。
2:預(yù)估平均QPS
總請(qǐng)求數(shù) = 總PV * 頁(yè)面衍生連接數(shù)
平均QPS = 總請(qǐng)求數(shù) / 總時(shí)間
比如:活動(dòng)落地頁(yè)1小時(shí)內(nèi)的總訪問量是30w pv,該落地頁(yè)的衍生連接數(shù)為30 ,那么落地頁(yè)的平均QPS
(30w * 30) /(60 * 60) = 2500,
3:預(yù)估峰值QPS
系統(tǒng)容量規(guī)劃時(shí),不能只考慮平均QPS,而是要抗住高峰的QPS,如何評(píng)估峰值QPS呢?
這個(gè)要根據(jù)實(shí)際的業(yè)務(wù)評(píng)估,通過(guò)以往的一些營(yíng)銷活動(dòng)的 pv 等數(shù)據(jù)進(jìn)行預(yù)估。一般情況,峰值QPS大概是均值QPS的3-5倍,日均QPS為1000,于是評(píng)估出峰值QPS為5000。
不過(guò),有一些業(yè)務(wù)例如“秒殺業(yè)務(wù)”比較難評(píng)估業(yè)務(wù)訪問量,這類業(yè)務(wù)的容量評(píng)估不在此討論。
4:預(yù)估系統(tǒng)、單機(jī)極限QPS
如何預(yù)估一個(gè)業(yè)務(wù),一個(gè)服務(wù)器單機(jī)的極限QPS呢?
這個(gè)性能指標(biāo),是服務(wù)器,最基本的指標(biāo)之一,所以沒有其他的辦法,就是壓力測(cè)試。通過(guò)壓力測(cè)試,算出服務(wù)器的單機(jī)極限QPS 。
在一個(gè)業(yè)務(wù)上線前,一般都需要進(jìn)行壓力測(cè)試(很多創(chuàng)業(yè)型公司,業(yè)務(wù)迭代很快的系統(tǒng)可能沒有這一步,那就悲劇了),以APP 推送 某營(yíng)銷活動(dòng)為例(預(yù)計(jì) 日均QPS 1000,峰值QPS 5000),業(yè)務(wù)場(chǎng)景可能是這樣的:
1)通過(guò) APP 推送一個(gè)活動(dòng)消息
2)運(yùn)營(yíng)活動(dòng)H5落地頁(yè)是一個(gè)web站點(diǎn)
3)H5落地頁(yè)由緩存cache、數(shù)據(jù)庫(kù)db中的數(shù)據(jù)拼裝而成
通過(guò)壓力測(cè)試發(fā)現(xiàn),web 服務(wù)器 單機(jī)只能抗住1200的QPS,cache和數(shù)據(jù)庫(kù)db 能抗住并發(fā)壓力,(一般來(lái)說(shuō),1%的流量到數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)120 QPS還是能輕松抗住的,cache的話QPS能抗住,需要評(píng)估cache的帶寬,這里假設(shè)cache不是瓶頸),這樣,我們就得到了web單機(jī)極限的QPS是1200。一般來(lái)說(shuō),生產(chǎn)系統(tǒng)不會(huì)跑滿到極限的,這樣容易影響服務(wù)器的壽命和性能,單機(jī)線上允許跑到QPS 1200 * 0.8 = 960 。
擴(kuò)展說(shuō)一句,通過(guò)壓力測(cè)試,已經(jīng)知道web層是瓶頸,則可針對(duì)web 相關(guān)的做一些調(diào)整優(yōu)化,以提高web 服務(wù)器 的單機(jī)QPS 。還有,壓力測(cè)試工作中,一般是以具體業(yè)務(wù)的角度進(jìn)行壓力測(cè)試,關(guān)心的是某個(gè)具體業(yè)務(wù)的并發(fā)量和QPS。
5:回答最開始那兩個(gè)問題
需要的機(jī)器 = 峰值QPS / 單機(jī)極限 QPS
好了,上述已經(jīng)得到了峰值QPS是5000,單機(jī)極限QPS是1000,線上部署了3臺(tái)服務(wù)器:
(1)服務(wù)器能抗住么? -> 峰值5000,單機(jī)1000,線上3臺(tái),扛不住
(2)如果扛不住,需要加多少臺(tái)機(jī)器? -> 需要額外2臺(tái),提前預(yù)留1臺(tái)更好,給3臺(tái)保險(xiǎn)
三,最后
需要注意的是,以上都是計(jì)算單個(gè)服務(wù)器或是單個(gè)集群的容量,實(shí)際生產(chǎn)環(huán)境是由web, 消息隊(duì)列,緩存,數(shù)據(jù)庫(kù) 等等一系列組成的復(fù)雜集群。在分布式系統(tǒng)中,任何節(jié)點(diǎn)出現(xiàn)瓶頸,都有可能導(dǎo)致雪崩效應(yīng),最后整個(gè)集群垮掉 (“雪崩效應(yīng)”指的是系統(tǒng)中一個(gè)小問題會(huì)逐漸擴(kuò)大,最后造成整個(gè)集群宕機(jī))。所以,要了解規(guī)劃整個(gè)平臺(tái)的容量,就必須計(jì)算出每一個(gè)節(jié)點(diǎn)的容量。找出任何可能出現(xiàn)的瓶頸所在。
文章來(lái)源:博客園
<數(shù)商云(www.zhimaihui.cn)是國(guó)內(nèi)知名企業(yè)級(jí)電商平臺(tái)提供商,為企業(yè)級(jí)商家提供最佳的系統(tǒng)開發(fā)(多種模式電商平臺(tái)搭建:B2B/B2B2C/B2C/O2O/新零售等)、供應(yīng)鏈系統(tǒng)搭建及電商行業(yè)解決方案服務(wù)>
評(píng)論