JMeter & ab 使用簡介

AB(Apache Benchmark)

Apache Benchmark 是一個簡單易用的,可以幫助理解HTTP服務器如何處理大量流量的工具。該工具預裝在MacOS上,Linux發行版可使用任何包管理工具進行安裝。要閱讀更多關於Apache Benchmark的信息並瞭解它能做的事情,可鍵入 ”man ab“。

我們可以使用AB在特定的端口上出發特定數量的請求。我們還可以控制其他參數,例如併發(它會同時觸發多少個請求)。

執行命令:
ab -c 100 -n 1000000 -H ‘host:RateLimitingWebServer’ ‘http://127.0.0.1:4140/api/v1/limiting/tryAcquire?resource=jg-app_demo-HelloWorld&key=testKey’

JMeter

相對於Apache Benchmark,JMeter是一個更加強大的工具,允許對流量觸發方式有更具體的指定。例如,使用Jmeter可以實現”在1分鐘之內發送1000個請求“,這更符合實際。他是可配置的,提供了一個GUI來幫助使用者設置測試。

圖形界面主要用於創建、調試測試腳本,然後再在服務器端用命令行模式執行腳本,得出結果。

本地UI界面生成jmx腳本文件,上傳至服務器

  1. 測試計劃中添加線程組,一個Test Plan下可添加多個 Thread Group 以進行多個接口的混合測試。(注意多個接口測試的情況,需要將HTTP名稱設置不同的名字,否則測試報告中將無法區分)
    Thread Group節點有三個常用配置項:
  • Number of Threads(users):用於配置併發用戶數,類似於ab中的-c參數
  • Ramp-up period(seconds):用於配置啓動併發用戶數的時間段,比如Number of Threads配置爲10,而Ramp-up period配置爲5s,則每秒鐘啓動2個線程,該參數可用於程序的預熱。
  • Loop Count:設置循環次數,比如配置爲10,Number of Threads配置爲5,則總的請求數爲50。這個配置項也能勾選”Infinite“複選框,表示無限循環執行測試,需要手動停止測試執行。
    添加Thread Group
  1. 線程組下添加測試樣例,可根據不同接口協議選擇不同種類,以HTTP Request爲例,添加後可配置HTTP Request的各種屬性
    (Thread Group下也可添加一些Config Element,包括針對不同協議的其他配置設置,比如HTTP Header Manager配置請求頭中的一些參數)

添加HTTP Request

注:在Header中指定”host“屬性時,需要在其值中添加端口信息,否則發起請求時默認將Request中的端口附加到host屬性值上。可以在host屬性值後添加”:80“端口,提交請求時,該80端口會被忽略。

  1. 添加Listener監聽結果,可以嘗試不同的Listener,查看具體結果或統計信息。
    添加Listener

  2. 服務端命令行模式執行測試腳本
    https://jmeter.apache.org/usermanual/get-started.html#non_gui

./bin/jmeter -n -t flowControl.jmx -l log-u100.jtl
  • -n:CLI模式
  • -t:指定腳本文件
  • -l:生成結果日誌
  1. 下載結果日誌到本地,根據結果生成報告;也可以在服務器端生成報告後下載到本地。
    https://jmeter.apache.org/usermanual/generating-dashboard.html#report
./bin/jmeter -g log-u100.jtl -o ./report-u100 
  • -g:指定結果日誌
  • -o:指定報告生成地址目錄

也可以在JMeter圖形界面中使用某個Listener導入結果日誌,可看到彙總信息。

參考文章:
https://medium.com/@harrietty/load-testing-an-api-with-apache-benchmark-or-jmeter-24cfe39d3a23
JMeter最佳實踐:https://jmeter.apache.org/usermanual/best-practices.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章