性能測試-並發和QPS


性能測試-並發和QPS

響應時間:

cpu計算耗時 + cpu等待耗時 + 網絡io耗時 + 磁盤io耗時

並發:

服務端並發和客戶端並發不是同一個概念。客戶端並發僅僅是為了模擬多用戶訪問,服務端並發是同時處理的請求數。從收到客戶端的請求到處理完成發出響應,都是屬於並發執行的請求。

客戶端並發數不等於服務端並發數。雖然服務端同一時刻執行的線程數等於cpu個數,但是高性能的服務一般是都會使用了異步io;遇到io操作就扔給了操作系統執行,cpu接着干其他的事。所以應用程序同時可以處理多於cpu數目很多的請求。但也不是無限多的。影響並發的系統資源有socket數,帶寬緊張程度,內存緊張程度,cpu繁忙程度,磁盤繁忙程度。這些資源共同影響並發數。

這些資源中有些非常充足比如socket數(普通的服務都是設置了600000, 通過ulimit -n查看),有些就比較匱乏,比如磁盤(具體效率可以去google)。當磁盤遇到瓶頸的時候,socket資源充當了緩沖區。雖然同時能夠接受很多請求,但是真正能做出響應的比較少,造成響應時間增加,這種並發沒有意義。

所以,能保證最低響應時間的並發才是有效並發。
我們在壓力測試過程中,不斷的增加並發數,如果平均響應時間增加,說明並發能力已經到頭了,再加大並發總體性能將要降低。

上面已經談及到,並發數可通過多次實驗來獲得。

下面在來介紹一個種估算並發數據的方法:

C=n*L/T

C:並發

n:壓測時間段內所有的請求數

L:平均響應時間

T:壓測總時長

這里注意:L(平均響應時間)≠ T(總時長)/ n(總請求)

摘自:
從壓測工具談並發、壓力、吞吐量
Method for Estimating the Number of Concurrent Users

QPS:每秒請求數,qps是衡量吞吐量指標

我們在壓測工具制作中,一直存在一個爭議——吞吐量的計算。

在性能測試中,吞吐量的計算有兩種常見的公式:

公式1: 吞吐量=並發數/平均響應時間

公式2: 吞吐量=請求總數/總時長

公式1、2大家應該都接觸過,雖然看上去不一樣,其實理論上都是ok的。

首先我們可以從C = nL / T 推導:

並發 = 請求總數*平均響應時間 / 總時長

=》並發 / 平均響應時間 = 請求總數 / 總時長

=》公式1 = 公式2

摘自:
從壓測工具談並發、壓力、吞吐量

性能測試工具

附上一些性能測試工具,排名不分先后,大家喜歡哪個用哪個。

hey
siege
vegeta
wrk
ab


免責聲明!

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



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