一、性能測試注意點
1. 用jmeter測試時使用BeanShell腳本獲取隨機參數值,會導致請求時間過長,TPS過低。應改為使用csv讀取參數值,記錄的TPS會更加准確。
注:進行性能測試時,應注意會影響請求時間的操作,盡量避免因為測試方法不當影響測試結果。
2. 進行穩定性測試前,盡量對Jmeter進行減負,避免運行時間過長,導致Jmeter卡死。
減負方式:
(1)參數寫死或者直接讀取csv的數值,減少程序負荷
(2)並發線程不要設置太高,設置200以下
(3)“察看結果樹”勾選“僅日志錯誤”,盡可能減少jvm內存使用
(4)可添加“Simple Data Writer”且保存為csv格式數據
(5)其他監聽組件可以都禁掉,通過保存的數據線下生成圖標報告
3. 注意如果服務重啟后,PID會發生變化,通過命令行方式收集CPU、內存使用數據時,要使用最新的PID進行采集:
ps -ef | grep test 查詢進程號,test為服務名關鍵字
top -b -d 1 -p 34012 > 1117_log 其中34012為PID,1117_log為需要記錄的日志名(不存在會自動新建文檔)
4. 如果勾選了CPU等監聽組件,需要先啟動代理服務:
cd ../tmp/ServerAgent-2.2.3
執行./startAgent.sh
5.使用jp@gc - PerfMon Metrics Collector性能測試工具時,要在運行壓力測試前開啟性能監控,否則可能會造成壓力測試期間的性能測試數據缺失而造成性能分析不准確。
6. 進行壓力測試時,逐步增加並發量,直至能夠明顯看出性能瓶頸為止
二、性能指標分析
聚合報告各項性能指標
聚合報告常用指標 |
|
Label |
每個JMeter的element(例如 HTTP Request)都有一個Name屬性,這里顯示的就是Name屬性的值 |
Samples |
請求次數(=線程數*循環次數) |
Average |
平均響應時間 |
Median |
中位數,也就是50%用戶的響應時間 |
90% Line |
90%用戶的響應時間 |
95% Line |
95%用戶的響應時間 |
Min |
最小響應時間 |
Max |
最大響應時間 |
Error% |
本次測試中出現錯誤的請求的數量/請求的總數 |
Throughput |
吞吐量——默認情況下表示每秒完成的請求數(Request per Second) |
KB/Sec |
每秒從服務器端接收到的數據量 |
接口性能測試指標一般通過標准:
性能測試指標通過標准 |
|
需滿足的並發數 |
C = nL/T |
需要滿足的TPS |
根據二八原則: |
響應時間 |
根據在並發情況下的響應時間2/5/10原則,最長不能超過10s |
錯誤率 |
具體系統具體要求,一般小於萬分之一 |
緩存命中率 |
具體系統具體要求,一般大於85%通過 |
CPU占用率 |
70% 好,85% 壞,90%+ 很差 |
內存使用率 |
一般小於80%通過 |