JMeter 核心特性
- 100% 純 Java,跨平台桌面應用
- 支持 HTTP/HTTPS、FTP、JDBC、JMS、LDAP、SOAP/REST 等協議
- 多線程並發框架,支持線程組獨立配置
- 豐富監聽器:聚合報告、圖形結果、查看結果樹、摘要報告等
- 可擴展:BeanShell/JSR223 腳本、自定義取樣器、插件生態
- 支持分佈式壓測(Master-Slave 模式)
測試場景:客戶信息查詢頁面
- 目標頁面:
khxx_xg.jsp(接收參數 → 調用 JavaBean → 輸出信息)
- 服務端:P4 / 512MB / Oracle 10g + Tomcat 5.5
- 壓測端:P4 / 512MB / JMeter
- 測試參數:
in_id=dsgds
JMeter 測試計劃構建步驟
1. 線程組 —— 定義負載模型
- 線程數:10(模擬 10 個並發用戶)
- Ramp-Up Period:0 秒(立即並發啟動所有線程)
- 循環次數:10(每線程執行 10 次請求,總計 100 次)
說明:Ramp-Up > 0 時,線程按間隔啟動;勾選 Forever 則無限循環直到手動停止。
2. HTTP 默認請求 —— 統一基礎配置
- 服務器:
localhost
- 端口:
8080
- 協議:
http
- 路徑:
/hrbin/hg_admin/khxx_xg.jsp
3. HTTP 請求取樣器 —— 具體業務請求
- 方法:GET/POST 根據業務選擇
- 參數:添加
in_id = dsgds
4. 監聽器 —— 結果收集與展示
- 聚合報告:核心指標匯總(吞吐量、響應時間分位、錯誤率)
- 可補充:查看結果樹(調試)、圖形結果(趨勢)、摘要報告(導出)
壓測結果數據與分析
| 並發用戶 | 總樣本 | 平均響應(ms) | 中位數(ms) | 90%行(ms) | 最小(ms) | 最大(ms) | 錯誤率 | 吞吐量(req/s) | KB/sec |
| 10 | 642 | 672 | 688 | 125 | 125 | 719 | 0.0% | 14.8 | 221.15 |
| 25 | 250 | 1620 | 1687 | 1750 | 250 | 1781 | 0.0% | 14.5 | 217.14 |
| 50 | 500 | 3319 | 3438 | 3578 | 281 | 3657 | 0.0% | 14.2 | 212.02 |
| 75 | 750 | 4887 | 5109 | 5584 | 328 | 7094 | 0.0% | 14.5 | 216.67 |
| 100 | 1000 | 6244 | 6485 | 6672 | 250 | 6844 | 0.0% | 15.1 | 225.43 |
關鍵指標解讀
- Average:單次請求平均響應時間
- Median (50%):一半用戶的響應時間
- 90% Line:90% 用戶的響應時間,關鍵 SLA 指標
- Throughput:每秒完成請求數,系統處理能力直觀體現
- Error%:錯誤請求佔比,>0% 即需排查
性能基線判讀(經驗值)
| 響應時間 | 用戶感知 | 業務建議 |
| < 2 秒 | 非常快 | 優秀,無需優化 |
| 2-5 秒 | 可接受 | 可優化,非緊急 |
| 5-10 秒 | 較慢 | 需優化,影響體驗 |
| > 10 秒 | 極差/超時 | 嚴重缺陷,必須修復 |
本案例結論
- 10-25 並發:響應 < 2s,**性能優秀**
- 25-50 並發:響應 2-5s,**可接受,建議優化數據庫/連接池**
- 50-100 並發:響應 > 5s,**性能不足,需架構優化(緩存、異步、集群)**
進階實踐建議
- 參數化:使用 CSV Data Set Config 讀取真實業務參數
- 邏輯控制器:Loop/If/While/Random Controller 構建真實業務流
- 定時器:Gaussian/Uniform/Constant Throughput Timer 模擬思考時間
- 斷言:Response Assertion 驗證業務正確性,而非僅看 HTTP 200
- 分佈式壓測:單機瓶頸時部署多台 Slave,Master 統一協調
- 監控聯動:結合 JVisualVM、Prometheus+Grafana 觀測服務端資源