为什么即使仅使用一个客户端,发送速率仍低于config.yaml(超级卡尺)中的配置速率?

时间:2019-08-13 08:49:23

标签: caliper hyperledger-caliper

我将发送速率配置为500 tps,并且我仅使用一个客户端,因此发送速率应约为500tps,但在生成的报告中,发送速率约为130-40 tps。为什么会有这么大的偏差?

我正在使用卡尺的Fabric ccp版本。

我希望发送速率约为450-480,但实际发送速率约为130-40 tps。 enter image description here

1 个答案:

答案 0 :(得分:1)

Node.js是一个单线程框架(异步/等待只是意味着延迟执行,而不是并行执行)。卡尺通过以下步骤运行循环:

  1. 等待速率控制器启用下一个TX
  2. 创建一个异步操作,其中用户模块将调用区块链适配器。

所有待处理的TX都消耗了一些CPU时间(当不等待I / O时),并且还计划了其他操作(例如,将有关TX的更新发送到主进程)。

要达到500 TPS,速率控制器必须每 2ms 启用一次TX。那不是很多时间。尝试产生1个以上的本地客户端,这样负载将在它们之间共享(5个客户端100 TPS /客户端,10个客户端50 TPS /客户端,等等)。