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


在做系統設計時,架構師希望建立一套高性能的系統,而吞吐量(TPS)則作為衡量系統性能的重要指標。在做性能測試的時候,測試人員需要了解系統並發用戶數、系統吞吐量、以及響應時間等,下面就按照這幾者之間的關系簡單整理如下。

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

2、並發用戶數的計算公式
系統用戶數:系統額定的用戶數量,如一個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) = 242


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

一個系統的吞度量(承壓能力)與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,主要是看響應時間快慢。

4、如何獲取Vu和TPS

  • 並發用戶數(Vu)獲取

新系統:沒有歷史數據作參考,只能通過業務部門進行評估。
舊系統:對於已經上線的系統,可以選取高峰時刻,在一定時間內使用系統的人數,這些人數認為屬於在線用戶數,並發用戶數取10%就可以了,例如在半個小時內,使用系統的用戶數為10000,那么取10%作為並發用戶數基本就夠了。

  • 吞吐量(TPS)獲取

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

因此對於大型系統、業務量非常高、硬件配置足夠多的情況下,5000用戶並發就足夠了;對於中小型系統,1000用戶並發就足夠了。

5、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM