首頁>技術>

分散式壓測需求場景

一些關鍵介面需要壓測到很高的QPS需要設定更多的執行緒去模擬虛擬使用者去請求介面假如需要模擬2萬個使用者因為jemeter使用java語言開發每建立一個執行緒jvm預設會為每個執行緒分配1M的堆疊記憶體空間那麼就需要20G記憶體一般壓測機器是4核8G或8核16G因此需要更多臺機器共同完成施壓請求
分散式壓測示意圖
meter分散式測試環境中有兩個角色:Master和Slaves1、Master節點:向參與的Slaves節點發送測試指令碼,並聚合Agent節點的執行結果,部署一臺2、Slaves節點:接收並執行Master節點發送過來的測試指令碼,並將執行結果返回給Master,可部署多臺
安裝slave節點
docker pull runcare/jmeter-slavedocker run -it -d --name slave01 runcare/jmeter-slavedocker run -it -d --name slave02 runcare/jmeter-slavedocker run -it -d --name slave03 runcare/jmeter-slave
準備測試指令碼

test.jmx

檢視slave機器的IP
docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q)
啟動master docker並執行測試指令碼

存放test.jmx指令碼的目錄

/Users/mengfanxiao/Documents/stream/jemeter/jmx/

命令

result=`date +"%Y%m%d%H%M%S"` && docker run --rm -v /Users/mengfanxiao/Documents/stream/jemeter/jmx/:/data runcare/jmeter-master jmeter -n -t /data/test.jmx -l /data/$result.jtl -j /data/$result.log -e -o /data/$result -R 172.17.0.6,172.17.0.7,172.17.0.8

或者

docker run --rm -v $(pwd):/data runcare/jmeter-master jmeter -n -t /data/test.jmx -l /data/result.jtl -j /data/result.log  -R 172.17.0.6,172.17.0.7,172.17.0.8
結果檔案
生產的結果檔案,日誌檔案和報表檔案在指令碼檔案test.jmx同一目錄下如果壓測指令碼中使用到了csv資料來源檔案,需要提前複製到Slaves的/data目錄下
注意事項master和slaves需要在同一個網段
如果mac電腦Master使用安裝在mac電腦中的JmeterSlaves使用Docker中的Slaves需要在啟動Slaves時將埠映射出來docker run -it -d -p 1099:1099 -p 60001:60001 runcare/jmeter-slave
執行Master傳送指令碼時也需要指定server.hostname和server.rmi.localport
進入test.jmx所在目錄result=`date +"%Y%m%d%H%M%S"` && jmeter -n -t test.jmx -l $result.jtl -j $result.log -e -o $result -Djava.rmi.server.hostname=30.208.47.45 -Dserver.rmi.localport=60002 -Dserver_port=1098
Dockerfile原始碼
https://gitee.com/pingfanrenbiji/resource/tree/master/%E5%88%86%E5%B8%83%E5%BC%8Fjemeter
Jeecgboot微服務Feign

示例

服務jeecg-cloud-system 呼叫 jeecg-cloud-demo
jeecg-cloud-demo 服務介面介面實現類服務介面jeecg-cloud-system編寫feign客戶端方式一 feign客戶端啟動類加上@EnableFeignClients編寫feign客戶端編寫測試方法方式二 動態feign客戶端啟動類 @EnableFeignClients

同上

編寫feign介面呼叫

同上

編寫測試方法
引數一表示feign介面類引數二表示類名稱
feign原理架構圖feign掃包和註冊細節FeignClientFactoryBean 解析代理的實現過程代理invoke的實際執行過程xxl-job定時任務整合引入依賴客戶端demo編寫修改 jeecg-dev.yaml 配置檔案開啟 xxljob 並 修改 xxljob-admin的服務連線配置啟動xxl-job服務

資料庫指令碼

https://gitee.com/pingfanrenbiji/jeecg-boot/blob/1e3a4d6a6f53589a3cd53fd18c62bf4375467447/jeecg-boot/jeecg-cloud-module/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql

配置郵箱通知

開啟郵箱服務並生成授權碼

設定IMAP服務的SSL加密方式

https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=331

啟動服務

介面訪問

http://localhost:9080/xxl-job-adminadmin123456
建立定時任務

新增執行器

新增定時任務

測試定時任務

檢視執行日誌

18
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • GitHub標星139K的:“嵌入式Linux系統開發教程”