之前有材料写 CITA 是如何达到 15000 TPS 的,但在实际使用 CITA 的过程中,又往往感觉到达不了官方所宣称的性能;你是否开始怀疑官方欺骗了你?
首先,我想说明的是,官方所宣称的性能数据都是在实测中得到的,并没有水份,只不能在测试过程中,需要做一些参数调整,使 CITA 的性能能够充分发挥出来。性能调优是一项复杂工程,你在实际使用过程中没有达到预期,其影响的因素也可能很多。在这里,我列举几个常见的因素,供大家参考,希望对大家有所帮助。
1. 应用层流量压力不够
想发挥 CITA 的极限性能,首先需要加满对 CITA 的流量压力,简单点说就是不停地给 CITA 发交易。
怎么判断是流量压力不够 ?
当你的测试输入满负荷运行的时候;但运行 CITA 的节点却 CPU 占用不高。
怎么解决?
- 多起几个发送交易线程对 CITA 进行加压;
- 如果 1 仍不能满足测试压力,可能是单节点的 RPC 接口接收能力有限;可以考虑将测试压力从多个 CITA 节点同时输入;
- 如果 1 ,2 仍不能满足测试压力,可能是测试机的性能已经用完了;可以考虑采用多台测试机同时向多个 CITA 节点同时输入。
总之,要满足测试流量压力相对还是比较简单的。
2. 交易 quota 与 BQL 配置不合理
CITA 在设计时,为了防止交易对 CPU 资源的无限利用,就设置了 quota 与 BQL 的机制。这两者限制了一个块所能存放的交易数,可以先通过下面这个分享先了解一下两者是如何影响交易并发的:
怎么判断是 quota 与 BQL 配置不合理?
存在大量的交易无法上链,或者查看区块的交易数明显偏少;同时 运行 CITA 的节点 CPU 利用率不高。
怎么解决?
调整 quota 与 BQL 的配置。如果你发送的交易执行复杂度很低,可以考虑调低交易的 quota 值 (默认是 10000000, 可以调至 100000);或者调高 BQL,使一个块能容纳更多的交易。
3. CITA 节点配置不一致
CITA 是分布式网络,如果采用多个共识节点,其整体性能其实是取决于性能最差的那个节点。
因此,在测试 CITA 性能时,建议多个节点采用一致的基础设施(包括节点的性能、OS、网络、存储等)。
4. CITA 节点上同时运行其它程序
常见的情况可能是在运行 CITA 节点上同时运行发送交易的测试程序。
测试程序本身会占用很大的 CPU 性能,这对 CITA 有比较大的影响。因此,建议将 CITA 节点运行在独立的主机上。
综上,影响测试性能的因素会有很多,但有一点是不变的:
当 CITA 发挥其极限性能的时候,应该是运行 CITA 的节点 CPU 占用率非常高 (几乎跑満),或者网卡出现了満载,又或者写磁盘的带宽用完了 (不过这种情况比较少)。
上一篇 : 【李先生带你玩 CITA】数据隐私中的密码学概念 ](【李先生带你玩 CITA】数据隐私中的密码学概念)
下一篇 : …