當前版本:
- jmeter 5.6.3
- mysql?5.7.39
簡介
? ? JMeter 通過 BZM - Arrivals Thread Group 來模擬并發到達的用戶流量、按時間加壓,可以有效地幫助測試人員評估系統在高壓力和高并發情況下的性能表現。
????????
文章目錄如下
1. 下載插件
2. 界面說明
3. 測試步驟
?3.1. 添加壓測線程組
3.2. 設置JDBC配置
3.3. 構造簡單業務
3.4. 配置監聽器
3.5. 運行測試
4. 按秒壓測
????????
1. 下載插件
地址如下(下載2個包,一個用于階梯式壓測,一個用于增加性能監聽器)
Download :: JMeter-Plugins.org
(注意:JMeter版本5.2.0以上)
?
將下載的兩個zip包解壓后,找到 JMeterPlugins-Standard.jar 和 JMeterPlugins-Extras.jar,放到?jmeter\lib\ext\ 下,重啟 jmeter 生效。
????????
2. 界面說明
添加階梯式壓測線程組
- 右擊測試計劃 → 添加 → 線程(用戶)?→?bzm - Arrivals Thread Group
?
????????
界面說明
?
- Target Rate:目標速率 (請求數,可以理解為最大吞吐量)。如果選擇下面單位為分鐘,那么這里的 10000 就是每分鐘吞吐量達到10000;如果選擇秒,則表示每秒達到10000。
- Ramp Up Time:設置多久達到最大請求數
- Ramp Up Steps Count:設置階梯次數(默認0,直線上升)
- Hold Target Rate Time:達到最大請求數后,設置繼續運行時間
- Time Unit:選擇時間單位(minutes:分,second:秒)
- Thread lterations Limit:線程迭代限制(每個線程執行測試計劃的次數)
- Log Thread Status into File:將線程狀態記錄到文件
- Concurrency Limit:并發限制
????????
3. 測試步驟
jmeter 通過如下組件來構造高并發:
bzm - Arrivals Thread Group # 模擬吞吐量階梯式壓測
JDBC Connection Configuration # 配置數據庫連接信息
JDBC Request # 構造業務
通過如下監聽器來查看性能指標
聚合報告 # 查看整體性能指標
jp@gc - Response Times Over Time # 查看響應時間走勢圖表
jp@gc - Transactions per Second # 查看吞吐量走勢圖表
jp@gc - Active Threads Over Time # 查看線程數走勢
?????????
?3.1. 添加壓測線程組
- 右擊測試計劃 → 添加 → 線程(用戶)?→?bzm - Arrivals Thread Group
需求:吞吐量在3分鐘逐漸遞增(共遞增5次),最終吞吐量達到10000/分,達到1w后繼續運行1分鐘。配置如下:
?
????????
3.2. 設置JDBC配置
- 右擊測試計劃 → 添加 → 配置元件 →?JDBC Connection Configuration
?
?
"""MySQL"""
URL:jdbc:mysql://[IP]:[端口]/[數庫名] # jdbc:mysql://localhost:3306/mysql
Driver:com.mysql.jdbc.Driver
"""Oracle"""
URL:jdbc:oracle:thin:@[IP]:[端口]:[數庫名] #jdbc:oracle:thin:@localhost:1521:orcl
Driver:oracle.jdbc.OracleDriver
"""PostgreSQL"""
URL:jdbc:postgresql://[IP]:[端口]/[數庫名] # jdbc:postgresql://localhost:5432/postgres
Driver:org.postgresql.Driver
? ? ? ??
3.3. 構造簡單業務
- 右擊線程組 → 添加 → 取樣器 →?JDBC Request
簡單讀語句(僅舉例)?
????????
3.4. 配置監聽器
- 右擊線程組?→ 添加 → 監聽器 → 聚合報告
- 右擊線程組?→ 添加 → 監聽器 → jp@gc - Response Times Over Time
- 右擊線程組?→ 添加 → 監聽器 → jp@gc - Transactions per Second
- 右擊線程組?→ 添加 → 監聽器 →?jp@gc - Active Threads Over Time
所有基礎配置如下:
?
????????
3.5. 運行測試
?
? ? ? ??
【最終結果】聚合報告
????????
【最終結果】響應時間
????????
【最終結果】吞吐量
????????
【最終結果】線程數
????????
總結
我們配置的吞吐量為?10000/分,換算為每秒 10000 / 60 = 167。從上面測試結果來看,響應時間非常低,吞吐量很穩定,并且僅1個線程就能夠滿足要求,說明此次壓測并沒有達到數據庫可承受的最大值,如果需要測試程序最大承受壓力直接修改?Target Rate 即可。
????????
4. 按秒壓測
我們將單位設置為秒,那么設置的最大吞吐量就是每秒最大達到1000。這里分了5個階梯,達到最大后持續運行 2+5分鐘,觀察是否指標穩定。
- Concurrency Limit 限制了最大100個線程數。?
????????
【結果如下】
吞吐量按需求持續增長,最終達到1000/s,相對穩定
????????
線程數隨著吞吐量的增加也是有所增長,整體也比較穩定
????????
響應時間較快,也相對穩定。