壓力測試是給軟件不斷加壓,強制其在極限的情況下運行,觀察它可以運行到何種程度,從而發現性能缺陷,是通過搭建與實際環境相似的測試環境,通過測試程序在同一時間內或某一段時間內,向系統發送預期數量的交易請求、測試系統在不同壓力情況下的效率狀況,以及系統可以承受的壓力情況。然后做針對性的測試與分析,找到影響系統性能的瓶頸,評估系統在實際使用環境下的效率情況,評價系統性能以及判斷是否需要對應用系統進行優化處理或結構調整。並對系統資源進行優化。
以上四種性能指標主要可分為系統資源利用率和系統行為(響應時間、吞吐量等)兩個方面。它們之間存在一定的相關性,共同反映出性能的不同方面。比如,響應時間、最大並發用戶數、吞吐量和資源利用率可以分別用來衡量軟件的及時性、擴充能力和容量、處理能力、運行狀態。響應時間越短、承受的並發數越多、吞吐量越大、占用的資源越少,表明系統性能越好,反之性能越差。
壓測任務需求的確認
壓測前要明確壓測功能和壓測指標,一般需要確定的幾個問題:
- 固定接口參數進行壓測還是進行接口參數隨機化壓測?
- 要求支持多少並發數?
- TPS(每秒鍾處理事務數)目標多少?響應時間要達到多少?
- 壓服務器名稱還是壓服務器IP,一般都是壓測指定的服務器
壓測設置
- 線程數:並發數量,能跑多少量。具體說是一次存在多少用戶同時訪問
- Rame-Up Period(in seconds):表示JMeter每隔多少秒發動並發。理解成准備時長:設置虛擬用戶數需要多長時間全部啟動。如果線程數是20,准備時長為10,那么需要10秒鍾啟動20個數量,也就是每秒鍾啟動2個線程。
- 循環次數:這個設置不會改變並發數,可以延長並發時間。總請求數=線程數*循環次數
- 調度器:設置壓測的啟動時間、結束時間、持續時間和啟動延遲時間。
壓測結果查看
運行完后,聚合報告會顯示壓測的結果。主要觀察Samples、Average、error、Throughput。
- Samples:表示一共發出的請求數
- Average:平均響應時間,默認情況下是單個Request的平均響應時間(ms)
- Error%:測試出現的錯誤請求數量百分比。若出現錯誤就要看服務端的日志,配合開發查找定位原因
- Throughput:簡稱tps,吞吐量,默認情況下表示每秒處理的請求數,也就是指服務器處理能力,tps越高說明服務器處理能力越好。
壓測結果的分析
-
有錯誤率同開發確認,確定是否允許錯誤的發生或者錯誤率允許在多大的范圍內;
-
Throughput吞吐量每秒請求的數大於並發數,則可以慢慢的往上面增加;若在壓測的機器性能很好的情況下,出現吞吐量小於並發數,說明並發數不能再增加了,可以慢慢的往下減,找到最佳的並發數;
-
壓測結束,·登陸相應的web服務器查看CPU等性能指標,進行數據的分析;
-
最大的tps:不斷的增加並發數,加到tps達到一定值開始出現下降,那么那個值就是最大的tps。
- 最大的並發數:最大的並發數和最大的tps是不同的概率,一般不斷增加並發數,達到一個值后,服務器出現請求超時,則可認為該值為最大的並發數。
- 壓測過程出現性能瓶頸,若壓力機任務管理器查看到的cpu、網絡和cpu都正常,未達到90%以上,則可以說明服務器有問題,壓力機沒有問題。
- 影響性能考慮點包括:數據庫、應用程序、中間件(tomact、Nginx)、網絡和操作系統等方面。
一個很好的壓測教程:
https://blog.csdn.net/tomoya_chen/article/details/80626212
https://www.cnblogs.com/stulzq/p/8971531.html
接口測試例子:
https://www.cnblogs.com/heiyexiaoguai/p/6387675.html
Jmeter websocket采樣器插件下載:https://download.csdn.net/download/tomoya_chen/10467755