以太坊geth同步自动关闭问题分析

来源:互联网 发布:南京睿悦 知乎 编辑:程序博客网 时间:2024/05/31 11:03

问题场景

在启动以太坊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 +0x94created 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分区。

关注

获得更多资讯和技术,请关注微信公众号:程序新视界。

目前本人承接以太坊技术相关项目(交易或钱包类),如有需要请联系QQ:541075754。
这里写图片描述