性能指標有兩種
- 業務指標
- 技術指標
通常我們會從兩個層面定義性能場景的需求指標,它們有映射關系,技術指標不能脫離業務指標
並發
狹義理解
- 指同一個時間點執行相同的操作(如:秒殺)
廣義理解
- 同一時間點,向服務器發起的請求(可能是不同的請求)
- 只要向服務器發起請求,那么服務器在這一時間點內都會收到請求(不管是不是同一個請求)
並發用戶數(重點)
-
同一時間點,發出請求的用戶數,一個用戶可以發出多個請求
和並發的關系
-
假設有 10 個用戶數,每個用戶同一時間點內發起 2 個請求,那么服務器收到的請求並發數就是 20
相關概念
- 系統用戶數:系統累計注冊用戶數,不一定在線
- 在線用戶數:在線用戶可能是正常發起請求,也可能只是掛機啥操作都沒有【在線用戶數≠並發用戶數】
- 線程數:在 jmeter 中,線程數和並發用戶數等價
事務
- 客戶端向服務器發送請求,然后服務器做出響應的過程
- 登錄、注冊、下單等功能都屬於一個事務
- 一個事務可能會發起多個請求
jmeter相關
-
jmerter 中,默認一個接口請求,就是一個事務;但也支持多個接口整合成一個事務
若一個業務或事務有多個接口,那么多個單接口的性能指標值相加 ≠ 業務或事務的性能指標值
看看還有哪些性能指標值
響應時間(response time)
- 概念:從發起請求到收到請求響應的時間
- 包含:Request Time 和 Response Time
- 等價:發起請求網絡傳輸時間 + 服務器處理時間 + 返回響應網絡傳輸時間
(在做性能測試時,要盡可能的降低網絡傳輸時間,這樣最終得出的 RT 會無限接近服務器處理時間,所以我們要把網絡環境搞好)
(事務請求響應時間,完成單個事務所用的時間,1個事務可能包含多個請求)
TPS(Transaction Per Second,最主要的指標)
-
服務器每秒處理事務數,衡量服務器處理能力的最主要指標
T是如何定義的
- 在不同的行業、業務中,TPS 定義的顆粒度可能是不同的
- 所以不管什么情況下,需要做性能測試的業務的相關方都要知道你的 T 是如何定義的
定義TPS顆粒度
- 一般會根據場景的目的來定義 TPS 的粒度
- 接口層性能測試:T 可以定義為接口級
- 業務級性能測試:T 可以定義為每個業務步驟和完整的業務流
舉例
如果要單獨測試接口 1、2、3,那么 T 就是接口級
如果從用戶角度下訂單,那 1、2、3 都在一個 T 中,就是業務級
所以,性能中 TPS 中 T 的定義取決於場景的目標和 T 的作用
如何去測試
按照接口級腳本----業務級接口層腳本 ----- 用戶級腳本 去調用去測試
QPS(Queries per second)
- 每秒查詢率,在數據庫中每秒執行 SQL 數量
- 一個請求可能會執行多條 SQL
- 某些企業可能會用QPS代替TPS
- 也是衡量服務端處理能力的一個指標,但不建議使用
RPS(Request per second)
- 簡單理解(每秒請求數,用戶從客戶端發起的請求數)
- 就是說用戶在那一秒點擊一次,然后發送了3個請求,這3個請求分別調了A服務,B服務,C服務各自兩次。但是這個RPS是3 並不是2+2+2
HPS(Hit per second)
- 點擊率,每秒點擊數
- 有直接理解為用戶在界面上的點擊次數
- 一般在性能測試中,都用來描述 HTTP Request,那它代表每秒發送 HTTP 請求的數量,和 RPS 概念完全一樣
- HPS 越大對 Server 的壓力越大
CPS/CPM
- 每秒/每分鍾調用次數
- 通常用來描述 Service服務 層的單位時間內被其他服務調用的次數 (
- 就是說用戶在那一秒點擊一次,然后發送了3個請求,這3個請求分別調了A服務,B服務,C服務各自兩次。然后這個分別是 2 ,2 ,2次
吞吐量(Throughput)
- 單位時間內,網絡處理的請求數量(事務/s)
- 網絡沒有瓶頸時,吞吐量≈TPS
資源利用率
- 服務器資源的使用程度,比如服務器(應用、服務器)的CPU利用率,內存利用率,磁盤利用率,網絡帶寬利用率
- 一般不超過80%