文章目錄
- 一、前言
- 二、部署架構圖
- 三、問題分析
- 四、區域配置
- 1、重命名 war 包并啟動 control 服務
- 2、修改資料庫模式
- 3、重新啟動 control
- 4、資料遷移部分(如果不需要資料遷移可跳過此部分)
- 五、驗證測驗
- 六、其他 Agent 配置:
一、前言
在日常的壓測程序中,不同服務可能部署在不同的機房,為了避免網路因素影響,通常會在不同網路環境下部署相應的壓力機,
二、部署架構圖

三、問題分析
因為 nGrinder 集成的是所有機房的 Agent,所以當對服務器集群進行壓測時,nGrinder 的 Controller 會隨機從集群中選取壓力機,這樣就有可能會出現壓測其他機房的服務使用的是另一個服務群壓力機,因為兩個機房的帶寬并不足以支撐壓測,可能會導致壓測結果失真,
為了解決以上的問題,引入 nGrinder 區域的概念,即壓測 XX 服務集群,只會用本身機房的壓力機,壓測其他服務集群,只會使用本身的壓力機,實作結果如下:

四、區域配置
1、重命名 war 包并啟動 control 服務
將 nGrinder 的 war 包上傳到服務器(/usr/local),為了方便訪問我們這里將 war 包重命名

啟動 control 服務:
java -XX:MaxPermSize=200m-jar ROOT.war

出現以下內容,即表示服務啟動成功
2018-11-30 12:01:56.326:INFO:oejs.Server:main: Started @18683ms
ps:這里啟動服務是為了解壓,如果不啟動則不會有下一步的 h2-1.3.168.jar 包生成,
2、修改資料庫模式
因為之前 nGrinder 使用了中間件 tomcat 啟動,tomcat 啟動的資料庫模式是使用的內嵌模式,而配置 region 需要使用 Server 模式,所以我們需要把內嵌模式改成 Server 模式,
- 將資料庫jar包復制一份至 /usr/local 下
cp -R /root/.ngrinder/tmp/webapp/WEB-INF/lib/h2-1.3.168.jar /usr/local/
- 在 usr/local 下啟動資料庫,這里為了便于復用,我們將啟動資料庫的命令放到一個 shell 檔案里
vim h2start.sh
nohup java -cp "h2-1.3.168.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -baseDir /root/.ngrinder -webPort 9092 -tcpPort 9083 "$@" &
chmod 777 h2start.sh //賦予權限
./h2start.sh //啟動資料庫
在 nohup.out 里出現如下資訊表示資料庫啟動成功

- TcpAllowOthers 表示允許其他成員連接
- WebPort:資料庫 web頁 面的埠號,可通過 ip + 埠號訪問資料庫的 web 頁面
- TcpPort:資料庫連接埠號
3、重新啟動 control
- 切換到 urs/local 下,先加載環境變數再啟動應用服務
加載環境變數:
sudo su
source /etc/profile
啟動服務,這里為了便于復用,同樣也是放到一個 shell 檔案里
vim lugu8080.sh
nohup java -jar -XX:MaxPermSize=500m -jar ROOT.war -p 8080 -cm easy -clp 10010 -r lugu -cp 9001 -dh XX.XX.XX.XXX -dp 9083 &
chmod 777 lugu8080.sh //賦權限
./lugu8080.sh
再啟動阿里云的區域,同上:
vim aliyun8081.sh
nohup java -jar -XX:MaxPermSize=500m -jar ROOT.war -p 8081 -cm easy -clp 10011 -r aliyun -cp 9002 -dh XX.XX.XX.XXX -dp 9083 &
chmod 777 aliyun8081.sh //賦權
./aliyun8081.sh //啟動應用程式
- -p:web 訪問埠號,不同的 region 對應不同的埠號
- -cm:control 模式,這里配置的是簡易集群模式
- -r:區域名稱
- -dh:連接資料庫的地址
- -dp:連接資料庫的埠號,這里的埠號與上一步資料庫的 TcpPort 保持一致
- -cp:控制埠,這個后續 Agent 配置里會用到該埠
- 登錄后新建場景即可看到區域選項

至此 region 區域配置完成
4、資料遷移部分(如果不需要資料遷移可跳過此部分)
由于之前一直使用的是內嵌資料庫,應用程式會將資料存盤在 /root/.ngrinder/db/ h2.h2.db 資料庫中,而使用 Server 模式則會存放在 /root/.ngrinder/db/ngrinder.h2.db 目錄下,所以需要保存之前的壓測資料,
- 將現在使用的資料庫備份:
cd /root/.ngrinder/db
mv ngrinder.h2.db ngrinder.h2.db.bak
- 將
h2.h2.db重命名為ngrinder.h2.db
mv h2.h2.db ngrinder.h2.db
- 重新啟動服務
五、驗證測驗
- 在內嵌模式下添加一個腳本和場景


- 切換至 Server 模式,查看場景和腳本是否存在


從上圖可知,場景和腳本中的資料均未丟失,資料保持完整性,
六、其他 Agent 配置:
# Agent 的默認存放位置為 /usr/local
sudo su //切換超級用戶
source /etc/profile //加載環境變數
/usr/local/ngrinder-agent //進入到該目錄下
vim __agent.conf //編輯Agent的組態檔
修改 agent.controller_port 與 agent.region 和第三步啟動應用時設定的埠號、區域一致

修改后如下:

./run_agent_bg.sh -o //啟動Agent并加載組態檔
使用 admin 用戶登錄,在代理管理下看到該 Agent 表示啟動成功
至此 lugu 區域 Agent 配置完成,
阿里云配置與其他類似,保證埠號配置一致即可

相關系列:
- 性能工具之 nGrinder 入門安裝及使用
- 性能工具之 nGrinder 原始碼安裝
- 性能工具之 nGrinder Get 請求腳本撰寫
- 性能工具之 nGrinder Post 請求腳本
- 性能工具之 nGrinder 關聯腳本撰寫
- 性能工具之 nGrinder 引數化腳本撰寫
- 性能工具之 nGrinder 區域配置
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289437.html
標籤:其他
上一篇:【學習筆記】李宏毅2021春機器學習課程第4.2節:自注意力機制(二)
下一篇:深度學習 端對端的車牌檢測與識別 LPDR演算法 License Plate Detection and Recognition CCPD
