节点同步停止的常见原因

如何判断节点数据同步到最新

根据节点运行日志中的 Catch-up mode 信息可以知道节点是否同步到最新,如果 Catch-up mode 为 true,则表示节点还在追赶同步数据,为 false 则表示节点已同步到最新数据。

如何判断节点是否在正常同步数据

可根据节点运行日志 Catch-up mode 后边的 latest epoch 数值判断节点是否在进行同步,正常情况该数字会不断增长。

如果该数值不增长,也可根据 Statistics: StatisticsInner 的数值判断节点是否在正常工作,如果 inserted_block_countinserted_header_countinserted_block_countactivated_block_countprocessed_block_count 几个数值中任一数值在增长,都表示节点在正常工作。

2022-10-11T22:00:32.918557596+08:00 INFO  IO Worker #1         cfxcore::sta - Statistics: StatisticsInner { sync_graph: SyncGraphStatistics { inserted_block_count: 198117, inserted_header_count: 371367 }, consensus_graph: ConsensusGraphStatistics { inserted_block_count: 136125, activated_block_count: 371361, processed_block_count: 371366 } }

另外节点在重启时,会需要花费大量时间重建状态,此操作过程中,上述数值不会变化,但此为正常现象。此过程最长可能持续数小时。可耐心等待。

停止数据同步的常见原因

硬盘空间不够

首先可查看机器是否还有空间可用,正常情况下 Conflux 节点空间使用情况为:

网络问题

如果节点网络状况不好,导致无法连接到 peer 节点,则同步也会停止。如果是网络偶发,可尝试重启节点

系统最大文件打开数过低

系统该默认值为 1024, 节点运行需要调整为 65536

配置文件错误

如果启动节点时使用的配置文件错误(主网节点程序使用测试网配置文件;测试网节点程序使用主网配置文件)或未指定配置文件,此种情况会导致节点无法找到 bootnode,也就无法连接到其他网络节点。

节点数据文件损坏

如果节点数据文件损坏也会导致节点数据同步停止。此种情况在节点升级时出现可能性比较大:正确的升级方式是用最新的节点程序,替换原节点目录中的 conflux binary。一种错误的升级方式是,将原节点目录中的 blockchain 等数据目录拷贝到新下载的程序目录中,此种操作容易发生目录遗漏,拷贝不全的问题,大概率会导致节点无法继续同步

同步测试网 archivenode

如果是从头开始同步 archivenode,建议打开 additional_maintained_snapshot_count 并设置为 100

其他

使用官方下载的程序目录中的 start.sh 或 start.bat 启动节点,会在该目录下生成一个 stderr.txt 如果节点运行发生异常错误,会出现在该文件中,这些错误日志有助于排查节点同步失败原因。


Revision #4
Created 5 July 2022 06:23:22 by Pana
Updated 21 November 2022 12:44:49 by Pana