老实说,我已经厌倦了和永恒的臭虫搏斗了。现在,托管失败后,已经正常工作了几周的节点停止同步并挂在"Syncing: state healing in progress"上。在geth控制台中,web3.eth.blockNumber返回0。Prysm信标客户端很好,并继续审批块。我在互联网上研究了这个问题,并尝试了所有提供给我的东西,包括把geth构建变成不稳定。这些都帮不了我。我注意到只导入了块头,在节点启动时导入了一些块收据,但是我只看到这样的消息:
Feb 19 10:25:27 Imported new block headers count=1 elapsed="364.699µs" number=16,661,727 hash=ee51c8..aabdb1
Feb 19 10:25:27 Downloader queue stats receiptTasks=0 blockTasks=0 itemSize=276.22KiB throttle=950
Feb 19 10:25:35 Syncing: state healing in progress accounts=19734@1.09MiB slots=88381@6.82MiB codes=1597@11.07MiB nodes=18,720,858@4.89GiB pending=14404
Feb 19 10:25:37 Forkchoice requested sync to new head number=16,661,728 hash=e33a23..70c586
Feb 19 10:25:39 Imported new block headers count=1 elapsed=4.820ms number=16,661,728 hash=e33a23..70c586
Feb 19 10:25:43 Syncing: state healing in progress accounts=19851@1.09MiB slots=88597@6.83MiB codes=1597@11.07MiB nodes=18,722,242@4.89GiB pending=14328
Feb 19 10:25:48 Forkchoice requested sync to new head number=16,661,729 hash=55444d..ef9584
Feb 19 10:25:51 Imported new block headers count=1 elapsed="404.091µs" number=16,661,729 hash=55444d..ef9584
Feb 19 10:25:51 Syncing: state healing in progress accounts=20027@1.10MiB slots=88831@6.85MiB codes=1598@11.08MiB nodes=18,723,875@4.89GiB pending=14227下面是我用来启动节点的命令:
/geth/geth/geth --cache 2048 --maxpeers 16 --syncmode full --datadir /ethereum/execution --http --http.api eth,net,engine,admin,web3
发布于 2023-02-20 14:41:16
您目前正在从Geth 来源中将geth作为一个完整节点启动:
一个完整的逐块同步通过执行从成因块开始的每个块来生成当前状态。完全同步独立地通过在整个块的历史序列中重新执行事务来验证块出处以及所有状态转换。只有最近的128个块状态存储在完整的节点-旧块状态中,定期修剪,并表示为一系列检查点,从这些检查点可以根据请求重新生成任何以前的状态。128个积木约为25.6分钟的历史,拦截时间为12秒。若要在启动时创建完整的节点传递--同步模式。
此外,在默认情况下,完全同步模式的内部缓存默认值等于4096,而且您正在降低它,它会降低性能。
执行每个块可能需要很长时间,您真的需要启动一个节点作为一个完整的节点吗?尝试默认的“快照”同步模式,您可以在前面链接的源页面上找到更多信息。
https://ethereum.stackexchange.com/questions/145212
复制相似问题