分布式性能測試介紹


什么叫分布式

分布式,白話理解,就是當一台壓測機的並發壓力過大時,我們就選擇使用多台壓測機(即我們前面提到過的 Agent/負載機)。

同時補充一點:在我們性能測試分析的時候,一般分析出系統資源的瓶頸,比如,內存瓶頸我們可以加內存,硬盤瓶頸我們可以換硬盤,但是要是 CPU 發生瓶頸,這時優化測試方案只能是增加 PC 服務機。

分布式的策略

分布式測試的基本策略就是將其中一台機器作為 Controller,其他的機器都作為負載機,作為 Controller 的機器只起到調度任務的作用,其他的負載機進行壓力測試:

以上圖為例,分布式策略的處理過程如下:

  • 調度機 Controller 啟動以后,導入 jmx 腳本文件,會拷貝本地的 jmx 文件分發到遠程的 Agent 機器上;
  • Agent 機器拿到腳本以后啟動命令行模式去執行腳本,每台 Agnet 機器拿到的腳本都是一樣的,所以如果 jmx 腳本為60個線程跑4分鍾循環5次,那么實際並發就是 60×3(Agent 的機器數量)×5(循環次數)=900個線程並發跑4分鍾;

這里我們可以得出一個必要結論:分布式測試總樣本數 = 線程數 × 循環次數 × 執行機總數;

  • 執行時,Agent 會把執行獲得的數據結果傳給 Controller 機器,Controller 機器會收集所有 Agent 機器的信息並匯總,這樣 Controller 機器上就存在一份所有 Agnet 機器匯總的數據結果。

配置負載機的方法

在 JMeter 的 bin 目錄下的 jmeter.properties 文件中找到 remote_hosts,將負載機的 IP 地址配置上即可,多個負載機間用英文輸入狀態下的逗號(,)間隔,舉例來說:

調度機 IP 為:127.0.0.1

負載機1的 IP 為:127.0.0.2

負載機2的 IP 為:127.0.0.3

負載機n的 IP 為:127.0.0.4

此時配置remote_hosts為:

remote_hosts=127.0.0.2,127.0.0.3,127.0.0.4一定不能配置調度機的 IP 地址:

此時打開本地的 JMeter,遠程啟動時:

可以發現,此時只能啟動 127.0.0.2,127.0.0.3,127.0.0.4 這三台負載機。

注意事項

配置負載機是需要注意以下幾點:

  • 無論是調度機還是負載機,都要同時安裝相同版本的 JMeter,並且配置相同版本的 JDK,還要注意的是每一台負載機上的 JMeter 的插件也必須一致;
  • 對於負載機運行的腳本需要參數化的,一律使用 CSV Data Set Config 的參數化方式,並且所在每個負載機的路徑都一致;
  • 作為負載機的硬件條件也要完全一致,主要是 CPU、內存、硬盤必須一致。

調度機的作用

現在我們說下調度機從中扮演的角色:主要負責性能測試腳本的分發,及各個負載機(Agent)的測試結果收集匯總,報告產出。

另外:當負載機的數量有限,受 PC 資源數量的限制,此時我們也可以將 Controller 作為負載機,即將調度機的IP地址也加入到remote_hosts即可,此時我們在打開 JMeter 查看其遠程啟動:

負載機的作用

主要負責執行性能測試腳本及斷言等(命令行模式執行,無界面),並將執行結果反饋給調度機(Controller),若斷言執行成功則不返回請求響應數據及詳細斷言信息。

一個疑問

我們說既然調度機(Controller)本身可以作為負載機,那為什么不將其作為負載機呢?因為 JMeter 執行過程本身就是消耗資源的過程,所以條件允許的情況下,最好單獨部署一台機器作為調度機。

總結

  • 明確什么情況下需要將調度機也作為負載機;
  • 注意所有負載機上的 JMeter 版本、參數化以及使用的所有插件都要一致;
  • 介於 PC 資源限制,建議大家有條件的自己動手,一定親自演練一遍。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM