test 项负责对测试内容进行配置。配置主要集中在 round 字段中指定如何对区块链系统进行测试。每一个测试可以包含多轮,每一轮可以向区块链发起不同的测试请求。 本次测试是对系统的 createTx 接口进行测试。在测试中,可以通过 txNumber 字段指定测试的交易发送数量
性能监视器配置
monitor 项负责对测试所使用的性能监视器的进行配置。每项配置项的解释如下:
monitor.type,需要指定为 docker,指对 docker 容器进行监控;
monitor.docker.name,一个包含所有要监视的节点的 docker 容器名称列表;
monitor.interval,监视器的采样间隔,单位为秒。
实际测试
实际测试中,我选择类似 Apache 的测试结果。 全是正常交易
1 2 3 4 5 6 7 8 9 10
Tx Length:217088bytes交易数据的长度 Total Txs Number:15000 Time taken for tests:5.919seconds所有这些交易发送完所花费的时间 Complete requests:15000完成请求数 Failed requests:0失败请求数 Write errors:0 Total transferred:3256320000bytes网络总传输量 TPS:2536.3 [#/sec] (mean) 吞吐量-每秒交易数 Time per request:1.513 [ms] (mean, acrossallconcurrentrequests)并发的每个请求平均消耗时间 Transfer rate:67.15 [Mbytes/sec] received平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
说明: Tx 长度为 212 kb,换算为字节是 217088 bytes
用 nodejs 打印上述结果
打印区块 getMaxHeightBlock 接口–最高块 这里注意到,每个块包含 60 个交易,60*95=5700>3000(为平均每节点分配到的交易量),这里存在几种原因: ① 在并发生成块的时候,由于节点间的速率差异与网络延迟而导致当时观察到的 Tip 集不同,而导致的区块高度高于预期高度。 ② 由于处理交易的时候对于放在交易缓存池中的未打包交易进行转发操作,并标记为未打包,导致其中的一些交易被不同的节点重复打包,而导致打包交易量大于预期。
解释各个字段的含义
再通过 rpc 端口查询每个节点中各自存储的交易量 (发送 GET 请求到 channel 端口进行查询)