Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Probe 测试 - 小白开箱文档] #14

Open
lyp830414 opened this issue Feb 2, 2021 · 0 comments
Open

[Probe 测试 - 小白开箱文档] #14

lyp830414 opened this issue Feb 2, 2021 · 0 comments

Comments

@lyp830414
Copy link

lyp830414 commented Feb 2, 2021

PROBE小白开箱测试记录

测试背景

关于Probe

  1. Probe项目是TWGC社区性能优化小组推出的一个UI级性能测试工具项目。它的侧重点是通过操作FABRIC的四个性能参数 [
    BatchTimeout, MaxMessageCount,AbsoluteMaxBytes,PreferredMaxBytes ] 来测算这些参数不同组合下TPS可能达到的输出值;关于参数的说明下一小点我们会给出。

  2. 其中PROBE项目是基于TWGC的TAPE项目以及FABRIC官方的fabric-samples中的test-network项目。它通过用户手工配置以上四个参数,在Probe内部会调用TWGC生态的TAPE项目(性能测试工具)发起性能测,从而得到相应的TPS结果输出。

  3. 结果的输出将会是三维立体坐标系曲线图,以及产生一个CSV结果集文件。[ 我需要实测后详细备注 ]

  4. 目前Probe项目地址位于 https://github.com/SamYuan1990/Probe.git

配置参数说明

  1. Probe项目用到的这四个参数均属于Orderer排序服务需要关心和使用的参数,一般我们会配置在交易的configtx.yaml中,放在Orderer的属性之下。
  • BatchTimeout: 返回创建批处理之前要等待的时间。缺省配置是2s。
如果未在特定时间内填充该块,则BatchTimeout是一种回退机制。
该值提供了切割块要花费多长时间的上限(也就是说,定义了多久把一个Block生成出来)。  
  1. 以下三个参数均属于BatchSize 范畴的配置集合,它们位于configtx.yaml 的Orderer的 ’BatchSize‘ 配置集下;BatchSize配置集主要用来定义切割一个块之前能收集多少交易。

    关于这两类参数的详情说明,可参考 https://medium.com/@yashukla47/hyperledger-fabric-ideal-values-for-batchtimeout-and-batchsize-407a04b5d1a6

  • MaxMessageCount: 一个区块里允许包含的最大交易(消息)个数。缺省配置是10

  • AbsoluteMaxBytes: 批处理中的序列化消息允许的绝对最大字节数。缺省配置是99MB。

最大块大小是此值加上相关元数据的大小(通常为几KB,具体取决于签名身 份的大小)。
大于此值的任何交易将被Orderer直接拒绝。如果把OrdererType选择了“ kafka” ,请将Kafka代理节点(broker节点)上的“ message.max.bytes”和“ replica.fetch.max.bytes”设置为大于此值的值。对于本次的test-network底层链构建模型,我个人会在我的测试用例上配置成`etcdraft`
  • PreferredMaxBytes : 区块中首选的所有序列化后的消息大小的总和允许的最大字节数值。缺省配置是512KB。
如果序列化后的总消息长度超过它,那么此刻就是切割区块的分界点。具体可以参考这篇文章。https://www.liankexing.com/question/1399

参数具体配置和位置如下(configtx.yaml)
image

测试前的一些疑问

  1. Probe用户配置四个参数后,内部是去哪里改变这四个参数的(是否是sed切改configtx.yaml或者其他)

    目前了解下来:通过内建 Probe/sample/prepareConfig.sh 脚本由 sed 正则切改 configtx/configtx.yaml

  2. 修改后是否会重启test-network并开启测试

    目前了解下来:是会全新构建test-network

  3. 是否支持分布式test-network网络模型测试

    目前了解下来:项目暂对官方单vm mode做了验证

    待单vm验证通过后,可对 2 vm分布式做验证
    【注】
    这里是一个我以前的2 vm构建简单节点模型&构建脚本:
    https://github.com/wanxiang-blockchain/hackathon2020-T2-Fight.git

    • 脚本: hackathon2020-T2-Fight/alliance_blockchain/fabric_native_dev_project/run.sh
    • 构建说明: hackathon2020-T2-Fight/hackathon2020-T2-Fight/Tutorial_for_alliance_chain.txt

以上疑问等开启测试后,还会不定期补充。

测试记录

    1. 安装步骤
      根据教程 README_ZH.MD先完成 Probe 安装步骤。
    1. 环境检查
      安装步骤中在执行完boostrap.sh做完后,检查后台镜像下载情况。目前而言官方下载的fabric镜像版本是v2.3.1
      image
    1. 测试步骤
      a. 做完安装步骤后,执行npm start

    b. 进入我的测试web页面 http://192.168.1.135:3000
    选择TestnetworkSample选项,点Submit提交
    image
    image

    c. 此时可以看到Probe后台打印信息
    image

    d. 检查后端fabric底层链运行状态
    假如没有被加载,需重新检查哪步操作出现错误
    image

    e. 耐心等待Probe测试完成
    目前测下来,至少要等待到以下信息,才可去访问result页面(见下一小点)
    image

    f. 查看测试结果
    图片

图片

g. 关闭底层链 & 清空链数据
pushd fabric-samples/test-network && ./network.sh down && popd

遇到的问题 & 解决方案

问题现象描述

加载Probe并安测试步骤在localhost:3000执行test-network sample测试, 等待后台tape执行完毕后,检查result页面时发现X,Y轴都无数据,如下图所示。
image

image

问题追踪

经过后台观察,发现后台报chaincode安装失败。经排查后原因如下:

  • a. 我的ubuntu 18 LTS 环境因为假期重装了,没有安装go环境(snap install golang-go一行命令传送门,搞定go 1.15x)

  • b. 我的ubuntu没有外网环境,后台编译go chaincode出错,谷歌protobuf包被墙了。
    于是:
    cd ~/Probe/fabric-samples/asset-transfer-basic/chaincode-go;
    export GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn;
    go mod vendor
    耐心等待包下载完毕后,自己go build检查一下是否chaincode编译没有问题

  • c. 修改/etc/hosts文件,将以下内容写入,避免tape找不到domain。
    127.0.0.1 peer0.org1.example.com
    127.0.0.1 peer0.org2.example.com
    127.0.0.1 orderer.example.com

  • d. 重新启动 Probe
    cd ~/Probe/fabric-samples/test-network && ./network.sh down
    cd ~/Probe && npm start

  • e. 再次测试后,问题解决。

沟通 & Issues

#81
#82

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant