区块链学习5-长安链并发测试(3)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

上一篇

区块链学习4-长安链并发测试(2)_部署链_fvafuc的博客-CSDN博客

三、准备合约

1. 编译cmc工具

参考官方文档

https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html#cmc

cd chainmaker-go/tools/cmc
go build
# 复制链上认可的证书到cmc客户端
cp -rf ../../build/crypto-config ../../tools/cmc/testdata/
# 查看帮助
./cmc -h

2. 配置sdk_config.yml

修改cmc的sdk_config.yml使其连接到指定的一个或多个节点

vim ./testdata/sdk_config.yml

----------
nodes:
    - # 节点地址格式为IP:端口:连接数
      node_addr: "10.0.51.249:12301"
      # 节点连接数
      conn_cnt: 10
      # RPC连接是否启用双向TLS认证
      enable_tls: true
      # 信任证书池路径
      trust_root_paths:
        - "./testdata/crypto-config/wx-org1.chainmaker.org/ca"
      # TLS hostname
      tls_host_name: "chainmaker.org"

3. 使用cmc部署存证合约到链上

参考官方文档

https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html#id14


 4. 测试合约能否被调用

四、并发调用

1. cmc的parallel功能进行并发调用存证合约

 2. 查看帮助

 3. 一个批量调用合约示例和说明
 

./cmc parallel invoke \ #调用合约
--loopNum=1000  \ #循环次数类似于jmeter的loop count
--printTime=5 \ #日志打印时间间隔s)
--threadNum=1950 \ #并发用户数类似于jmeter的Number of thread
--timeout=1800 \ # 超时时间类似于jmeter的请求超时设置
--sleepTime=100 \ # 每隔多长时间发送一次请求单位是ms, 类似于jmeter的thread delay
--climbTime=1  \ # 爬坡度即每隔多久启动线程直至启动所有线程。类似于jmeter的stepping插件。
--use-tls=true \
--showKey=false \ # 是否打印输入的key值
--contract-name=fact \ #调用的合约名称
--method="save" \ # 调用合约的哪个方法
--pairs="" \
--hosts="10.0.51.249:12301" \ #连接哪台节点可以是多台用逗号隔开。
--pairs-file="./testdata/save.json" \ #具体的存证数据键值对也可以使用上面的pairs参数
--org-IDs="wx-org1.chainmaker.org" \ #以下参考官方的cmc说明。
--user-keys="./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key" \
--user-crts="./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt" \
--output-result=false \ #是否打印返回结果
--ca-path="./testdata/crypto-config/wx-org1.chainmaker.org/ca" \
--admin-sign-keys="./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org4.chainmaker.org/user/admin1/admin1.sign.key" \
--admin-sign-crts="./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org4.chainmaker.org/user/admin1/admin1.sign.crt"

下面附上jmeter的界面截图以便理解

 

4.调用存证合约参数文件示例

在第三步测试调用合约时存证数据为
--params="{\"file_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"6543234\"}" \

在批量调用时使用以下的方式

以"file_name\":\"name007\"为例 key=file_name, value=name007,

unique=true在调用时会自动为这个文件名添加值使其重复

上面用到的save.json文件内容例如

[{"value": "6543234", "key": "time", "unique": false}, {"value": "ab3456df5799b87c77e7f88", "key": "file_hash","unique":true}, {"value": "name007", "key": "file_name","unique":true}]

5. 并发测试并监控tps

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 区块链