最近使用Jmeter對接口進行了壓測,總結一下。本次壓測是單機執行,並未涉及分布式執行。
一、壓測要用命令行執行,不要用GUI。
因為GUI模式下客戶端的資源消耗比較高。
執行截圖:

命令:jmeter -n -t testplan.jmx -l result.jtl
testplan.jmx是使用的測試計划。
result.jtl是生成的結果文件,我們可以在測試結束后,在GUI模式下導入到聚合報告里,后面會有詳細介紹。
二、測試計划准備,參數的設置
在GUI模式下調試好腳本,保存,就可以用作壓測調用。
有個重點,就是設置壓測的參數。
線程組的壓測參數主要有3個:
1、線程數:模擬不同的用戶數量
2、完成時間:所有線程的啟動完成時間,也可以理解為准備時間,以秒為單位。比如我設定了20個線程,10秒完成,20/10=2,那么每秒會啟動2個線程。讓所有線程組的啟動,在時間上是均勻,避免最開始時壓力最大。
3、循環次數:每次線程執行的次數。這個循環次數的目的是,保證最后一個線程啟動時,第一個線程還沒結束,這樣保證了壓力。

壓測參數的設置要結合當前的性能表現、性能目標綜合考慮,壓測的結論也不是跑一兩次就能得到的。同樣的參數,同樣的條件,我一般會多跑幾次,在差別不大的前提下取平均值,作為測試結果。如果各次的結果有較大差異,就得分析影響因素。
三、測試結果的查看和分析
1、針對接口性能的數據分析
把生成的jtl文件,導入到GUI模式下的聚合報告中,就會得到常用的指標。

2、服務端性能數據的收集和分析
這里我用了Jmeter的Perfmon插件。首先要在服務器上安裝探針,用來采集性能指標的數據;然后在本地配置要監控的指標。要注意Jmeter的版本,perfmon和server端探針的版本,版本不匹配會獲取不到數據。(我就遇到Jmeter3.2無法獲取服務端指標數據的問題,換了3.3就好了)
服務端的探針,可以在github上直接下載,在服務器的根目錄解壓就可以,要執行.sh腳本,啟動探針。
客戶端的jmeter要配置IP和端口,連上探針。

perfmon的數據寫入一個文件,測試結束后,在這里導入下生成的測試結果文件即可。

