在使用不同的rest服务器(我们使用2或4个节点/服务器)发送大量事务的过程中,内存池总是溢出,服务器开始超载,块关闭了很长时间,这取决于事务的数量,事务越多,关闭块所需的时间就越多,总是在20秒到20分钟之间。例如,当我发送20k txs时,内存池被填满了20k事务,然后在20秒后阻塞所有事务。如果我们发送300k的事务,内存池填满了+-280k,在20分钟内关闭了3个块,~123,~123,~25 txs,但在这20分钟内tendermint总是错误,如"err="pong timeout"","err=EOF","used of closed network connection“等。另外,我们使用cosmos-sdk,我们不能关闭自动生成模块。https://github.com/tendermint/tendermint/issues/3905 -这是github问题,请查看更多信息
我尝试更改节点配置,但更改不多
我不知道我需要做什么,但是我们在mempool上遇到了麻烦,我们还没有解决问题。伙计们,你们知道我能用这个做什么吗?
发布于 2019-08-21 17:03:37
Tendermint使用两个例程p2p/conn/connection.go#recvRoutine和p2p/conn/connection.go#sendRoutine来处理传入消息和发送响应,并且这两个例程都是连续的。因此,如果一个节点正在处理新的txs并迭代地调用反应器,那么它会在所有反应器之前被阻塞(对于基本反应器,pl引用node/node.go#createSwitch )。
Tendermint在将to添加到内存池之前验证签名,根据config/config.go#DefaultMempoolConfig的说法,这需要大约.5ms,所以从字面上验证20k to大约需要10秒,这还不包括其他操作成本。
https://stackoverflow.com/questions/57569163
复制相似问题