天天看點

性能測試很簡單-JMeter性能測試實踐

最近破費買了一台阿裡雲伺服器,準備搭建自己的網站,順便将自己開發的一些測試小工具部署到伺服器上,雖然機器配置一般,還是決定對伺服器進行壓測一番,看一下伺服器性能如何。本次壓測選擇的工具是JMeter,這個工具也是接口測試工具,可以做接口自動化測試。話不多說,開整。

安裝Jmeter

JDK

​​https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html​​

性能測試很簡單-JMeter性能測試實踐

直接安裝dmg檔案即可。

JMeter

安裝很簡單,直接解壓官網下載下傳的.tgz安裝包就行了

​​https://archive.apache.org/dist/jmeter/binaries/​​

啟動,有兩種方式

  1. GUI啟動

進入解壓的Jmeter的bin目錄,執行./jmeter即可啟動

性能測試很簡單-JMeter性能測試實踐
  1. 非GUI啟動
jmeter -n -t xx.jmx -l log.jtl      

⚠️壓測注意事項:Don't use GUI mode for load testing:不要使用GUI模式進行負載測試。

壓測準備

服務介紹

​​http://121.196.172.xxx/?s=%E4%BD%A0%E5%A5%BD​​,該服務就是一個HTTP請求,Get請求方法。

性能測試很簡單-JMeter性能測試實踐

伺服器配置

配置項 配置值
CPU Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
記憶體 2G
硬碟 40G
作業系統 Red Hat 4.8.5-11

壓測任務

簡單壓測查詢服務性能,具體操作開啟100個線程對查詢接口進行壓測15min,觀察性能表現。

壓測腳本開發

  1. 配置線程組
性能測試很簡單-JMeter性能測試實踐
  • same user on each iteration:意思是同一個使用者發起請求,勾上并不能代表真正意義上的多線程通路。
  • Ramp-up period(in second):例如100個使用者,這裡配置10,則每秒啟動10個使用者
  • Loop-count:循環次數,每個線程發送請求的次數。eg:線程數為20,循環次數為5,那麼每個線程發送5次請求,總請求數為20*5=100
  1. 開發接口測試請求
性能測試很簡單-JMeter性能測試實踐
  1. 本地調試
性能測試很簡單-JMeter性能測試實踐

執行壓測

我們設定測試場景為100使用者,每隔1秒啟動10個新客戶;整個測試持續15min。現在,我們切換到性能測試腳本目錄下,執行下面的指令啟動測試:

jmeter -n -t xxx.jmx -l log.jtl      

生成壓測報告

jmeter -g log.jtl -o <report folder>      

壓測結果

伺服器監控

先看下伺服器監控

性能測試很簡單-JMeter性能測試實踐

壓測結果分析

我們需要先對測試結果做個介紹,檢視資料統計圖:

性能測試很簡單-JMeter性能測試實踐

平均響應時間3622ms,吞吐量12.92Tranction/s。

聚合報告參數詳解:

  1. Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裡顯示的就是 Name 屬性的值
  2. Samples:請求數——表示這次測試中一共發出了多少個請求,如果模拟10個使用者,每個使用者疊代10次,那麼這裡顯示100
  3. Average:平均響應時間——預設情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 為機關顯示平均響應時間
  4. Median:中位數,也就是 50% 使用者的響應時間
  5. 90% Line:90% 使用者的響應時間
  6. Min:最小響應時間
  7. Max:最大響應時間
  8. Error%:錯誤率—錯誤請求數/請求總數
  9. Throughput:吞吐量—預設情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
  10. KB/Sec:每秒從伺服器端接收到的資料量,相當于LoadRunner中的Throughput/Sec

吞吐量

性能測試很簡單-JMeter性能測試實踐

可以看到查詢服務的TPS在1分鐘内逐漸攀升,最終穩定在13QPS左右。

響應時間

性能測試很簡單-JMeter性能測試實踐

在開始逐漸加壓的1分鐘内響應時間不斷增加,可以結合伺服器監控發現,這主要是因為開始加壓階段CPU占用飙升至90%,記憶體使用也在增加(非主因)導緻。随着線程全部開啟後,資源消耗相對穩定,響應時間開始逐漸降下來,最終在2000ms左右徘徊。

性能測試很簡單-JMeter性能測試實踐

75%的事務處理時間都在4755ms以下,整體平均響應時間處于2800ms以下。