0

在使用不同的rest服务器(我们使用2或4个节点/服务器)发送大量交易期间,内存池总是溢出,服务器开始过载,块关闭很长时间,这取决于交易量,交易越多关闭块需要更多时间,它总是在 20 秒到 20 分钟之间。例如,当我发送 20k txs 时,mempool 被填充到 20k 事务,然后在 20 秒后关闭所有事务的块。如果我们发送 300k 笔交易,mempool 被填满 +-280k,并且在 20 分钟内关闭了 3 个区块,大约 123、~123、~25 txs,但在这 20 分钟内,tendermint 总是出现类似“err="pong timeout"”的错误, “err=EOF”、“用于关闭网络连接”等。此外,我们使用 cosmos-sdk 我们无法关闭自动生成块。 https://github.com/tendermint/tendermint/issues/3905 - 这是 github 问题,查看更多信息

我尝试更改节点配置,但没有太大变化

我不知道我需要做什么,但是我们在内存池方面遇到了麻烦,我们还没有解决。伙计们,你们知道我能用这个做什么吗?

4

1 回答 1

0

Tendermint 使用两个例程p2p/conn/connection.go#recvRoutinep2p/conn/connection.go#sendRoutine处理传入消息和发送响应,它们都是顺序的。因此,如果一个节点正在处理新的 txs 并迭代地调用反应器,它会在所有反应器之前被阻塞(请参考node/node.go#createSwitch基本反应器)。

Tendermint 在将 txes 添加到 mempool 之前验证签名,根据 ,这大约需要 0.5ms config/config.go#DefaultMempoolConfig,因此验证 20k txes 从字面上看需要大约 10s,不包括其他操作成本。

于 2019-08-21T09:03:37.180 回答