以下是2017年5月15日一个区块链工作室所做的测试结果。测试使用一个修改过的基于未来币1.11.5版本的私有区块链。在测试中,用一个测试工具向区块链发送了3百万次的交易,然后仔细检查并描绘出了节点表现和性能。
测试结果和观察如下:
硬件
- 节点1 - Asus N752VX 16GB RAM 256GB SSD Windows 10 64 bit
- 节点2 - Dell Latitude E5550 16GB RAM 512GB SSD Windows 7 64 bit
- 网络 - 1G以太网
软件
- 修改过的未来币1.11.5版本私钥链
- Java 1.8.0_131
- JMeter 3.1 loader utility
测试配置
- 两个锻造节点各自有1亿NXT
- 使用sendMoney交易类型
- 8小时内超过3百万次的确认交易
- 区块生成时间是1分钟
- 去除了现在每区块最多包含256个交易的限制
节点配置
- nxt.peerReconnectDelay=0
- nxt.peerUpdateDelay=0
- nxt.maxNumberOfTransactions=72000
- nxt.maxUnconfirmedTransactions=72000
- nxt.peerServerDoSFilter.maxRequestsPerSec=3000
- nxt.wellKnownPeers=<node1>;<node2>
结果
- 可持续的吞吐量是100TPS(TPS是指每秒交易数)
- CPU平均利用率是30%
- 内存消耗是3GB
观察
- 不像负载测试用的区块链,目前的公有区块链实际上的限制是12TPS,另外每区块最多256个交易的限制进一步使得TPS只要4左右。就目前而言还不需要更高的吞吐量,但是可以很快提供。
- 扩展区块链到100TPS需要进行复制的配置。这些配置不会以GPLv2许可证释出。它们只会用于为商用的私有链项目或者使用JPL许可证的区块链。
- 对于单个锻造的工作站节点,最大可达280TPS.
- 对于双节点测试,主要的限制因素是解决分叉争议,更换到一个更好的分叉非常消耗资源-我们应该可以看到阿朵会有更好的表现,因为使用了效率更高的点对点网络。节点的CPU和内存在测试中没有达到最大值,从这点我们推断:
-I/O和主要的数据库表现是限制性能的因素
-节点要想取得高性能必须配备固态硬盘
-Hardware with slower CPU and less RAM should still achieve similar results
-用慢点的CPU和少点的内存仍然可以实现类似的结果
- 更具体的说,目前用于未来币的H2数据库是一个可能的瓶颈。我们考虑在部署商业区块链时用外部数据库替代。
结论
能实现100TPS是未来币的一个了不起的成就,但是我们不会止步于此。对于阿朵,我们计划投入更多的精力到负载测试和可扩展性,使其甚至成为比现在扩展性更好的区块链解决方案。
原文链接:
https://www.jelurida.com/nxt-loadtest-results