fabric_performance
简单性能测试
服务
- order服务: 负责接收背书后的交易放入kafka中,并从kafka中读出交易出块
- peer服务: 负责背书交易
- http 客户端测试服务: 向peer发送交易背书后发送到order
- 1个通道,2个组织
机器
- 1号机,4核8g
- 2号机,4核8g
- 3号机,4核8g
- 云服务kafka
区块配置: 每区块512KB,每条交易2.9KB,每个区块平均包含173个交易
机器使用
1号机 | 2号机 | 3号机 |
---|---|---|
order服务 * 3 | peer服务 * 1 | http 客户端测试服务 * 1 |
性能情况
实时出块速度 | 只读出块速度 |
---|---|
1400 | - |
只读出块速度: http 客户端发送交易,首先发送到peer背书,随后发送到order节点,order节点收到交易后放入到kafka存储(消息生产过程),随后order出块(消息消费过程)。当消息生产速度高于消费速度,就会造成消息堆积,当消息生产速度为0,只消费堆积的消息的速度,称为只读出块速度。
第一次更新
增加区块大小
每区块1500KB,每条交易2,9KB,每个区块平均包含500个交易
性能情况
实时出块速度 | 背书速度 | 只读出块速度 |
---|---|---|
1500 | 1500 | - |
第二次更新
增加peer数量
机器使用
1号机 | 2号机 | 3号机 |
---|---|---|
order服务 * 3 | peer服务 * 1;peer服务 * 1 | http 客户端测试服务 * 2 |
性能情况
实时出块速度 | 背书速度 | 只读出块速度 |
---|---|---|
1000 | 8000*2 | 1800 |
观察
增加peer,peer的背书速度稍有提升,但出块速度竟然降低了..
出块的速度小于交易产生速度,当http 客户端停掉之后,出块的速度得到提升并且稍大于单个peer的情况。
第三次更新
追加服务器,负载均衡
- 4号机,4核8g
- 5号机,4核8g
机器使用
1号机 | 2号机 | 3号机 | 4号机 | 5号机 |
---|---|---|---|---|
order服务 * 3 | peer服务 * 1 | peer服务 * 1 | http 客户端测试服务 * 1 | http 客户端测试服务 * 1 |
性能情况
实时出块速度 | 背书速度 | 只读出块速度 |
---|---|---|
1300 | 1400 * 2 | 2200 |
观察
负载均衡后,背书的速度得到显著提升!实时出块和只读出块的速度也稍有提升。
但实时出块的速度还是没有只有1个peer的速度…
第四、五次更新
提升服务器性能,首先将order服务所在的1号机升级为8核16g,实时出块的速度增加到1700,但2个peer的速度还是没有1个peer的速度快..
其次,提升了kafka服务器的性能.. 结果没啥变化
第六次更新
再次提升服务器性能,这次提升的是peer节点的性能,将peer节点的2号机和3号机升级为8核16g
机器使用
1号机8核16g | 2号机8核16g | 4号机 |
---|---|---|
order服务 * 3 | peer服务 * 1 | http 客户端测试服务 * 1 |
性能情况
实时出块速度 | 背书速度 | 只读出块速度 |
---|---|---|
1800 | 1800 | - |
机器使用
1号机8核16g | 2号机8核16g | 3号机8核16g | 4号机 | 5号机 |
---|---|---|---|---|
order服务 * 3 | peer服务 * 1 | peer服务 * 1 | http 客户端测试服务 * 1 | http 客户端测试服务 * 1 |
性能情况
实时出块速度 | 背书速度 | 只读出块速度 |
---|---|---|
2600 | 1700 * 2 | 3500 |
观察
1个peer时速度为出块速度为1800
增加1个peer,背书速度提升接近2倍,出块速度增加至2600,当停掉http客户端后,只读出块速度增加至3500
结论
(在一定条件下)增加peer的数量,能增加tps。在本例中,8核16g的peer下,增加一个peer的tps由1800增加至2600。
所谓一定条件,例如peer服务对于服务器性能(内存等)要求挺高的。