nGrinder 介紹與安裝

  • 2019 年 10 月 6 日
  • 筆記

nGrinder是基於Grinder開源項目,但由NHN公司的nGrinder開發團隊進行了重新設計和完善(所以叫做nGrinder)。

它是由一個controller和連接它的多個agent組成,用戶可以通過web介面管理和控制測試,以及查看測試報告,controller會把測試分發到一個或多個agent去執行。用戶可以設置使用多個進程和執行緒來並發的執行該腳本,而且在同一執行緒中,來重複不斷的執行測試腳本,來模擬很多並發用戶。

nGrinder的測試是基於一個python的測試腳本,用戶按照一定規則編寫測試腳本以後,controller會將腳本以及需要的其他文件分發到agent,用Jython執行。並在執行過程中收集運行情況、響應時間、測試目標伺服器的運行情況等。並保存這些數據生成運行報告,以供以後查看。


為什麼選擇nGrinder

JMeter 基於UI操作,容易上手,但是不具備編程能力。其次JMeter基於執行緒模擬數千用戶幾乎不可能。

Tsung 基於Erlang,能模擬上千用戶並且易於擴展。但是基於XML的DSL,描述場景能力弱,而且需要大量的數據處理才知道測試結果。

Locust 基於python的gevent,能模擬百萬個用戶。但是需要對python有一定理解。

Loadrunner 這個可以說是應用最多的一個,很方便,但是還是太重。往後的方向肯定是客戶端工具逐步向平台化發展,所以loadrunner註定慢慢被淘汰(個人拙見)。而且不開源,擴展性不高,收費。

nGrinder 單節點支援3000並發、支援分散式、可監控被測伺服器、可錄製腳本、開源、平台化。

綜上可以看出nGrindr還是有很多優勢的。


總體架構

nGrinder 由兩個主要的組件組成:

Controller:

提供性能測試的web介面。 協調測試進程。 整理和顯示測試的統計結果 讓用戶創建和修改腳本。

Agent:

在代理伺服器上載入運行測試進程和執行緒 監控目標機器的系統性能(例如:CPU/MEMORY)

當 agent 啟動時,它們試圖連接到 controller,然後他們都附屬在 AgentControllerServer 組件上。AgentControllerServer (可以看做為一個 agent 的池)管理當前 agent 池。每當用戶開始性能測試時,一個新的 console 被創建,同時由 AgentControllerServer 提供所需數量的 agent。 SingleConsole (不是 Grinder 中的 Console ) 發送測試腳本和測試源碼到多個指定的 agent , 同時開始控制測試流,直到測試結束。當測試完成後,所使用的 agents 歸還給 AgentControllerServer ,以便在以後的其他測試中使用。 同樣,SingleConsole 也會歸還給 ConsoleManager 。

nGrinder 和 Grinder 最大的區別在於 nGrinder 在 controller 中保持多個 console 實例 和 agent 。每個 console 都是獨立的,所有 console 都可以同時運行。每當有需要時,許多 agent 可以提前被提前關聯和分配。與 grinder 不同,nGrinder 最大化 agent 機器的利用率。


ngrinder中文社區

http://ngrinder.642.n7.nabble.com/ngrinder-user-cn-f114.html


nGrinder安裝

3台linux伺服器: 192.168.42.164 部署controller 192.168.42.136 部署agent 192.168.42.32(被測應用機器) 部署monitor

先決條件

nGrinder是一個web應用(Controller)和Java應用(Agent, Monitor)的組合,需要安裝JDK 1.6或更高的版本。

nGrinder需要用到很多埠

Agent : Any ==> Controller : 16001 Agent : Any ==> Controller : 12000 ~ 12000+(允許並發測試的數量) Controller : Any ==> Monitor : 13243 Controller ==> Public user : 這取決於你的Tomcat的配置,默認為8080。

下載nGrinder

目前最新的版本是ngrinder3.4.1 https://github.com/naver/ngrinder/releases/download/ngrinder-3.4.1-20170131/ngrinder-controller-3.4.1.war

啟動nGrinder

建議使用tomcat,把war包放在tomcat的webapps文件夾下即可. 啟動tomcat的時候在catalina.sh中加上jvm參數:

JAVA_OPTS=」-Xms600m -Xmx1024m -XX:MaxPermSize=200m」

啟動後,打開瀏覽器訪問http://localhost:8080/ngrinder-controller-X.X X.X表示war包名稱

我這裡問:http://192.168.42.164:8080/ngrinder-controller-3.4.1/login,登錄名/密碼:admin/admin

安裝agent

agent在controller頁面中直接下載

因為使用的是admin帳號登錄,下載的agents包中的配置可以分享給所有的用戶使用。 如果你登錄的是一個普通帳號,下載鏈接將變成「Download Private Agent」 下載的agents包中的配置只能當前用戶使用

下載後,把agent放在伺服器上,解壓

啟動前檢查 ulimt -a ,調整配置讓其運行更多的執行緒,執行bash run_agent.sh 啟動agent。

安裝monitor

nGrinder的Monitor是agent的一個子集,用於收集系統相關數據(比如CPU, MEM and Network)

agent在controller頁面中直接下載

下載後,把monitor放在伺服器上,解壓

執行bash run_monitor.sh啟動monitor

安裝完測試

nGrinder運行一個壓力測試只需3步:

  1. 編寫測試腳本
  2. 場景設計:配置並發用戶數,執行時間,資源監控
  3. 場景執行,結束後自動生成報告

這裡測試一個簡單的get請求:http://192.168.42.32:82/sourcing/tradeservice/quotation-request.html

第一步,編寫測試腳本

登錄ngrinder,輸入url,點擊開始測試

第二步,場景設計

填寫相應場景資訊,如並發用戶數,場景執行時間等

第三步,場景執行

點擊保存並運行按鈕,開始場景執行

原文鏈接:http://tonylit.me/2017/03/23/ngrinder介紹與安裝/