1. 程式人生 > 實用技巧 >效能測試之Jmeter中場景設定與啟動方式

效能測試之Jmeter中場景設定與啟動方式

Jmeter場景設定與啟動方式

效能測試場景是用來模擬模擬真實使用者操作的工作單元,所以場景設計一定要切合使用者的操作邏輯,jmeter主要是通過執行緒組配合其他元件來一起完成場景的設定。

執行緒組設定

Jmeter執行緒組實際上是簡歷一個執行緒池,然後根據使用者的設定完成執行緒池的初始化,在執行時做各種邏輯處理

上圖是一個執行緒組的配置介面,下面我們對具體的引數進行說明

name和comments

是名稱和註釋的配置,這裡根據自己要測試的場景設定就好,最好是見名知意

Action to be taken after a sampler error

在取樣器錯誤後要執行的操作,也就是說在某一個請求出錯後的異常處理方式,有5中方式

  • Continue, 繼續,取樣器模擬的請求出錯後,繼續執行

    在大量使用者併發請求時,伺服器可能會出現錯誤響應,這屬於正常現象,此時要把錯誤記錄下來,繼續後面的請求

  • start next Thread Loop 如果出錯,則統一指令碼中的剩下的請求將不在執行,直接重新開始,比如有個場景,需要先登入後發文,這個時候如果登入失敗了,那麼發帖就不會成功,所以沒必要繼續執行,直接開始下一輪測試就好,此時就可以設定這個錯誤處理方式。

  • stop thread 停止執行緒,如果遇到取樣器模擬的某個請求失敗,則停止當前執行緒,不再執行,比如配置了40個執行緒,某個執行緒的請求失敗,則停止當前執行緒,剩餘的執行緒繼續執行,如果失敗的越多,則停止的越多,執行狀態的執行緒就會越來越少,那伺服器的負載就會不夠,測試結果也不具備參考性了,所一般不設定這個。

  • stop test 停止測試,如果某一個執行緒的一個請求失敗了,則停止掉所有執行緒,也就是說測試要停止,但是每個執行緒任然會執行完當前場景,比如當前場景為登陸發文,有個執行緒登陸失敗,其他執行緒也執行到了登陸,錯誤發生後,其他執行緒還是會繼續執行發文操作。

  • stop test Now 立即停止測試,如果有執行緒請求失敗,則立即停止所有執行緒,不再繼續執行

Thread Properties 執行緒屬性設定
  • 執行緒數 Number of Threads(users)

    執行的執行緒數設定,一個執行緒對應一個使用者

  • Ramp-up period(seconds)執行緒啟動開始執行的時間間隔,單位是秒,所有執行緒在多長時間內開始執行

    比如說設定了50個執行緒,Ramp-up period設定10秒,那麼每秒就會啟動5個執行緒,如果設定0秒,那麼50執行緒就會立即啟動。

  • Loop count 請求的重複次數,如果選擇infinite,那麼請求將會一直執行下去,除非停止或者崩潰,如果選擇填入具體次數,那就可以控制循序的次數了。

  • sam user on each iteration 每次迭代有使用相同的使用者,這個配置是5.2版本以後新加的,之前的版本沒有這個選項,所以會有一個問題,模擬的使用者並不是和真實場景一樣是相互獨立的,他預設在每個執行緒中是複用使用者,給大家推薦一篇文章https://www.cnblogs.com/nmb123/p/12266697.html

  • Delay Thread creation until needed

    JMeter 所有的執行緒是一開始就建立完成的,只是遞增的時候會按照上面的規則遞增。如果選擇了這個選項,則不會在一開始建立所有執行緒,只有在需要時才會建立。

    如果不選擇,在啟動場景時,JMeter 會用更多的 CPU 來建立執行緒,它會影響前面的一些請求的響應時間,因為壓力機的 CPU 在做其他事情嘛。如果選擇了的話,就會在使用時再建立,CPU 消耗會平均一些,但是這時會有另一個隱患,就是會稍微影響正在跑的執行緒

  • Specify Thread lifetime 執行緒執行時間,這個配置只有Loop count 請求的重複次數,配置了infinite,才會生效,否則還是Loop count 控制執行緒的執行

    • Duration(seconds)設定執行緒組執行多長時間,單位是秒
    • StartUp delay(seconds)設定執行緒啟動延時時間,單位是秒

場景執行

Jmeter的執行方式分為兩種,一種是GUI視覺化介面執行,另一種是命令列執行,這兩種都支援本地化執行即單體執行和遠端執行。這裡我們主要介紹遠端執行和jmeter命令列執行。

遠端執行配置
  • 遠端配置

    遠端執行節點埠配置:

    server_port=1099
    server.rmi.localport=1099

    執行:

    ./jmeter-server -Djava.rmi.server.hostname=本機ip
  • 本地配置

    remote_hosts配置

    remote_hosts=ip:port,ip:prot,... ip和port都是遠端執行機的ip和server的執行埠

    執行:

    java -jar ApacheJMeter.jar -n -t Thread\ Group.jmx -r -l result.jtl -R ip

    -R 指定要哪臺機器執行測試指令碼

命令列

命令列執行./jmeter -?可以輸出命令列引數選項,這裡只介紹一些比較常用的,更多用法看官方檔案

  • -l 記錄測試結果到檔案,指定檔案地址和名稱,可以使相對路徑也可以是絕對路徑
  • -d 指定jmeter home路徑
  • -R 開啟遠端負載機,指定負載機的ip
  • -n 指定非GUI方式執行
  • -t 指定jmeter指令碼檔案路徑
  • -L 指定日誌級別

歡迎大家去 我的部落格 瞅瞅,裡面有更多關於測試實戰的內容哦!!