问题场景

在启动以太坊geth同步数据的过程中会出现这样的问题,就是节点同步正常,日志没有报异常信息或者报出一些底层的类异常信息,随后geth节点进程自动关闭。

报异常信息类似于下面的异常:

geth sync goroutine 16678 [IO wait]:
……

goroutine 8 [chan receive, 4822 minutes]:
github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify.(*nonrecursiveTree).internal(0xc420064360, 0xc420064300)
    /home/bertrand/go-ethereum/build/_workspace/src/github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify/tree_nonrecursive.go:81 +0x94
created by github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify.newNonrecursiveTree
    /home/bertrand/go-ethereum/build/_workspace/src/github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify/tree_nonrecursive.go:30 +0x1ad

问题原因排查

遇到上面的问题,首先需要排查的geth节点部署的服务的配置情况,特别是内存情况。建议在节点同步数据时通过top命令观察一下内存情况。

引起此异常的主要原因是内存吃紧,导致oom-killer被触发。oom-killer会杀掉占用内存较高的进程,以确保系统不至于崩溃。

解决方案,首先是升级服务器内从;如果条件有限,可考虑建立或扩充swap分区。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注