系統設計 -- 併發用戶數與吞吐量

在作系統設計時,架構師但願創建一套高性能的系統,而吞吐量(TPS)則做爲衡量系統性能的重要指標。在作性能測試的時候,測試人員須要瞭解系統併發用戶數、系統吞吐量、以及響應時間等,下面就按照這幾者之間的關係簡單整理以下。數據庫

一、響應時間:對請求做出響應所須要的時間
網絡傳輸時間:N1 + N2 + N3 + N4
應用服務器處理時間:A1 + A3
數據庫服務器處理時間:A2
則響應時間 = N1 + N2 + N3 + N4 + A1 + A3 + A2

二、併發用戶數的計算公式
系統用戶數:系統額定的用戶數量,如一個OA系統,可能使用該系統的用戶總數是3000個,那麼這個數量,就是系統用戶數。
同時在線用戶數:在必定的時間範圍內,最大的同時在線用戶數量。
同時在線用戶數 = 每秒請求數RPS(吞吐量TPS) + 併發鏈接數 + 平均用戶思考時間

服務器

  • 平均併發用戶數的計算:C = n * L / T

      其中C是平均的併發用戶數,n是平均天天訪問用戶數(login session),L是一天內用戶從登陸到退出的平均時間(login session的平均時間),T是考察時間長度(一天內多長時間有用戶使用系統)

網絡

  • 併發用戶數峯值計算:C1 = C + 3 * sqr(C)

      其中C1是併發用戶峯值,C是平均併發用戶數,sqr(C)表明C的平方根。

示例:
假設有一個OA系統,該系統有3000個用戶,平均天天大約有400個用戶要訪問該系統,對一個典型用戶來講,一天以內用戶從登陸到退出該系統的平均時間爲4個小時,在一天的時間內,用戶只在8小時內使用該系統。
則根據公式1和公式2,能夠獲得:
C = 400 * 4 / 8 = 200
C1 = 200 + 3 * sqr(200) = 242session


三、吞吐量的計算公式
吞吐量:指單位時間內系統處理用戶的請求數
從業務角度看,吞吐量能夠用:請求數/秒、頁面數/秒、人數/天或處理業務數/小時等單位來衡量
從網絡角度看,吞吐量能夠用:字節/秒來衡量

一個系統的吞度量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。單個reqeust 對CPU消耗越高,外部系統接口、IO影響速度越慢,系統吞吐能力越低,反之越高。
系統吞吐量幾個重要參數:QPS(TPS)、併發數、響應時間。
    QPS(TPS):每秒鐘request/事務 數量
    併發數: 系統同時處理的request/事務數
    響應時間: 通常取平均響應時間
理解了上面三個要素的意義以後,就能推算出它們之間的關係:
QPS(TPS)= 併發數 / 平均響應時間,或者   
併發數 = QPS * 平均響應時間架構

示例:
一個典型的上班簽到系統,早上8點上班,7點半到8點的30分鐘的時間裏用戶會登陸簽到系統進行簽到。公司員工爲1000人,平均每一個員上登陸簽到系統的時長爲5分鐘。能夠用下面的方法計算。
QPS = 1000/(30*60) 事務/秒
平均響應時間爲 = 5*60  秒
併發數= QPS*平均響應時間 = 1000/(30*60) *(5*60) = 166.7

Vu和TPS換算舉例說明
TPS是每秒事務數,可是事務是要靠虛擬用戶run出來的,假如1個虛擬用戶在1秒內完成1筆事務,那麼TPS明顯就是1;若是某筆業務響應時間是1ms,那麼1個用戶在1秒內能完成1000筆事務,TPS就是1000了;若是某筆業務響應時間是1s,那麼1個用戶在1秒內只能完成1筆事務,要想達到1000的TPS,至少須要1000個用戶;所以能夠說1個用戶能夠產生1000TPS,1000個用戶也能夠產生1000TPS,主要是看響應時間快慢。併發

四、如何獲取Vu和TPS性能

  • 併發用戶數(Vu)獲取

新系統:沒有歷史數據做參考,只能經過業務部門進行評估。
舊系統:對於已經上線的系統,能夠選取高峯時刻,在必定時間內使用系統的人數,這些人數認爲屬於在線用戶數,併發用戶數取10%就能夠了,例如在半個小時內,使用系統的用戶數爲10000,那麼取10%做爲併發用戶數基本就夠了。測試

  • 吞吐量(TPS)獲取

新系統:沒有歷史數據做參考,只能經過業務部門進行評估。
舊系統:對於已經上線的系統,能夠選取高峯時刻,在5分鐘或10分鐘內,獲取系統每筆交易的業務量和總業務量,按照單位時間內完成的筆數計算出TPS,即業務筆數/單位時間(5*60或10*60)網站

所以對於大型系統、業務量很是高、硬件配置足夠多的狀況下,5000用戶併發就足夠了;對於中小型系統,1000用戶併發就足夠了。設計

五、TPS與硬件、網絡配置

  • 基準參數

平均響應時間1S
TPS峯值242
頁面平均大小20KB
每頁平均包含20張圖片,每張圖片平均大小50KB

  • PV估算

平均一天8個小時工做時間都按峯值估算,TPS * 8 * 60 * 60 = 6969600

  • 數據庫估算

假設每一個頁面平均執行3個SQL,每一個SQL平均耗時100毫秒,數據庫須要的併發數爲3 * 242 / 0.1S = 73

  • 帶寬估算

應用服務器帶寬,頁面平均大小20KB,平均響應時間1S,去除數據庫的交互時間(1000ms - 3 * 100ms)後爲700ms,平均每一個requst帶寬是28.57KB/S,最大帶寬242 * 28.57 / 1024 = 6.75MB/S
圖片服務器帶寬估算相似應用服務器

  • CPU估算、內存估算

對於天天1千萬PV(併發100用戶)網站的解決方案:處理器:8核 內存:16G 帶寬:50Mbps數據庫內存:16G

相關文章
相關標籤/搜索