问题场景

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



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

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2019/07/06/%e4%bb%a5%e5%a4%aa%e5%9d%8ageth%e5%90%8c%e6%ad%a5%e8%87%aa%e5%8a%a8%e5%85%b3%e9%97%ad%e9%97%ae%e9%a2%98%e5%88%86%e6%9e%90/