簡體   English   中英

發送大量事務期間內存池溢出

[英]Overflowing mempool during sending a lot of transaction

在使用不同的其余服務器(我們使用2個或4個節點/服務器)發送大量事務的過程中,內存池總是溢出並且服務器開始過載,塊關閉了很長時間,這取決於事務量,更多的事務關閉塊需要更多的時間,通常在20秒到20分鍾之間。 例如,當我發送20k txs時,mempool會填滿20k筆交易,然后在20秒內關閉所有交易。 如果我們發送30萬筆交易,則內存池最多會填滿+ -280k,並在20分鍾內用〜123,〜123,〜25 txs關閉了3個區塊,但是在這20分鍾內,minimmint始終會出現“ err =“ pong timeout””錯誤, “ err = EOF”,“用於封閉的網絡連接”等等。 另外,我們使用cosmos-sdk無法關閉自動生成塊。 https://github.com/tendermint/tendermint/issues/3905-這是github問題,請查看更多信息

我嘗試更改節點配置,但更改不多

我不知道該怎么辦,但我們在內存池方面遇到了麻煩,也沒有決心。 伙計們,您是否知道該怎么辦?

Tendermint使用兩個例程p2p/conn/connection.go#recvRoutinep2p/conn/connection.go#sendRoutine來處理傳入消息和發送響應,並且這兩個例程都是順序的。 因此,如果一個節點正在處理新的tx並迭代調用反應堆,則它會在所有反應堆之前被阻塞(請參考node/node.go#createSwitch用於基本反應堆)。

Tendermint在將tx添加到mempool之前先驗證簽名,根據config/config.go#DefaultMempoolConfig大約需要0.5毫秒,因此驗證20k tx實際上需要大約10 s,這不包括其他操作成本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM