当前位置: 首页 > article >正文

Fisco Bcos2.x使用Caliper工具进行压力测试

Fisco Bcos2.x使用Caliper工具进行压力测试

Fisco Bcos Caliper测试工具虽然可以和Fisco-Bcos进行绑定执行压力测试,目前通过Caliper进行压测FISCO BCOS的方式已较为陈旧。所以目前FISCO BCOS2适配的Caliper版本为0.2.0,请在部署Caliper运行环境时确保Caliper的版本正确。

配置基本环境

  • 部署Caliper的计算机需要有外网权限;

  • 操作系统版本需要满足以下要求:
    Ubuntu >= 16.04
    CentOS >= 7
    MacOS >= 10.14

  • 部署Caliper的计算机需要安装有以下软件:
    python 2.7
    make
    g++
    gcc
    git

安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

配置Docker Daemon

在执行此步骤前先停止docker服务

创建/etc/docker/daemon.json文件(如果已经存在则修改)

{
  "hosts" : ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

使用sudo systemctl edit docker新建或修改/etc/systemd/system/docker.service.d/override.conf

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

重新加载daemon并重启docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker.service

下载caliper

npm install --only=prod @hyperledger/caliper-cli@0.2.0

下载预定义测试用例

git clone https://gitee.com/vita-dounai/caliper-benchmarks.git

修改源代码处理

fisco bcos当前版本和caliper之间有一些兼容问题,所以请按照下面所述步骤进行修改。

修改三个文件,一个依赖包版本

fiscoBcos.js:

./node_modules/@hyperledger/caliper-fisco-bcos/lib/fiscoBcos.js

channelPromise.js:

./node_modules/@hyperledger/caliper-fisco-bcos/lib/channelPromise.js

web3sync.js:

./node_modules/@hyperledger/caliper-fisco-bcos/lib/web3lib/web3sync.js

secp256k1依赖包版本:

./node_modules/@hyperledger/caliper-fisco-bcos/package.json

fiscoBcos.js

修改一

最上面常量

//const Color = require('./common');
const Color = require('./common').Color;
修改二

在constructor(config_path,workspace_root){}最后加入

if(this.fiscoBcosSettings.network && this.fiscoBcosSettings.network.authentication){
    for(let k in this.fiscoBcosSettings.network.authentication){
        this.fiscoBcosSettings.network.authentication[k]=CaliperUtils.resolvePath(this.fiscoBcosSettings.network.authentication[k],workspace_root)
    }
}
修改三

在 async installSmartContract{}最前面修改

//const fiscoBcosSettings = CaliperUtils.parseYaml(this.configPath)['fisco-bcos'];
const fiscoBcosSettings = this.fiscoBcosSettings;

channelPromise.js

修改一

在function parseResponse(response){}处修改

//let emitter = emitters.get(seq).emitter;
let emitter = emitters.get(seq);
if(!emitter){
    return;
}
emitter = emitter.emitter;

web3sync.js

修改一

在function genRandomID(){}处修改

//uuid = uuid.replace(/-/g,'');
uuid = '0x'+uuid.replace(/-/g,'');

修改二

在function getSignTx(){ let postdata = {} }处修改

//extraData:''
extraData:'0x0'

修改三

在function getSignDeployTx(){ let postdata = {} }处修改

//extraData:''
extraData:'0x0'

secp256k1依赖包

node_modules/@hyperledger/caliper-fisco-bcos目录,package.json文件

在dependencies中添加
"secp256k1":"^3.8.0"

在该目录执行npm i

绑定 fisco-bcos

 npx caliper bind --caliper-bind-sut fisco-bcos --caliper-bind-sdk latest

执行HelloWorld合约测试

npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml  --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json

测试本地搭好的链

monitor:
  type:
  - process
  process:
    - command: node0
      multiOutput: avg
    - command: node1
      multiOutput: avg
    - command: node2
      multiOutput: avg
    - command: node3
      multiOutput: avg
  interval: 0.1

npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json

错误及问题解决

-bash: /usr/local/bin/docker-compose: permission denied

这个错误提示意味着你没有执行docker-compose命令的权限。你需要使用sudo命令或者以root用户身份执行该命令。你可以尝试使用以下命令来解决这个问题:

sudo chmod +x /usr/local/bin/docker-compose

这个命令将会给docker-compose文件添加可执行权限,这样你就可以在不使用sudo命令或者root用户身份的情况下执行docker-compose命令了。


http://www.kler.cn/news/364967.html

相关文章:

  • micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite
  • #数据结构(二)--栈和队列
  • 线性代数学习
  • 基于NVIDIA NIM平台—生成属于自己的DIY食谱
  • Excel功能区变灰是什么原因造成?怎么解决?
  • 《近似线性可分支持向量机的原理推导》 约束条件 公式解析
  • 凸优化学习
  • Docker 与 Yocto
  • HTTP和RPC通信协议
  • 高精度计算
  • 【安当产品应用案例100集】024-BYOE及BYOK在IaaS场景中的应用
  • 深度学习:网络压缩(Network Compression)详解
  • opencv实战项目(三十三)奥比中光深度相机检测箱盖是否盖严
  • 大数据-188 Elasticsearch - ELK 家族 Logstash Output 插件
  • LinkedList作者:我虽然开发了LinkedList,但是我更爱用ArrayList
  • 【Conda】Conda 超时设置及优化指南:提升包管理效率的关键
  • 【C#】调用本机AI大模型流式返回
  • 十八、行为型(状态模式)
  • Notepad++通过自定义语言实现日志按照不同级别高亮
  • AI写PPT工具:四款人工智能软件全面解析!!
  • 5G超级上行,到底有多行?
  • Spring Boot在线考试系统:JavaWeb技术的最佳实践
  • vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
  • 3.cpp基本数据类型
  • 设计模式(二)工厂模式详解
  • 数据结构_day3