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

问题场景

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

悲观锁与乐观锁

1095
来自专栏性能与架构

Mysql网络连接的性能配置项

max_conecctions:整个MySQL允许的最大连接数 这个参数主要影响的是整个MySQL应用的并发处理能力,当系统中实际需要的连接量大于max_con...

3156
来自专栏鸿的学习笔记

不一样的日志

这里提的日志并不是应用程序产生的日志,应用程序产生的日志是以一种人类读得懂的方式展示程序运行信息的记录方式,本身不包含任何数据,这篇文章所要描述的日志指的数据系...

935
来自专栏我是攻城师

为什么说Elasticsearch搜索是近实时的?

33913
来自专栏我是极客人

ElasticSearch数据同步与无缝迁移

ElasticSearch作为一款开源的全文搜索引擎在如今的软件开发得到了越来越广泛的应用,在业务功能开发方面,可以选用ElasticSearch提供比数据库查...

1592
来自专栏简单聊聊Spark

Spark内核分析之Scheduler资源调度机制

        上一篇我们阐述了Driver,Application,Worker的注册实现原理,本篇我们来接着聊聊Driver,Application在注册之...

1162
来自专栏java一日一条

Java I/O底层是如何工作的?

缓冲与缓冲的处理方式,是所有I/O操作的基础。术语“输入、输出”只对数据移入和移出缓存有意义。任何时候都要把它记在心中。通常,进程执行操作系统的I/O请求包括数...

522
来自专栏流媒体人生

关于Wince进程外组件~

1. Minimal COM提供最基础的COM开发接口(API),每个com对象的创建大概需要10~20K。

711
来自专栏Java编程技术

异步打印日志的一点事

最近刚刚结束转岗以来的第一次双11压测,收获颇多,难言言表, 本文就先谈谈异步日志吧,在高并发高流量响应延迟要求比较小的系统中同步打日志已经满足不了需求了,同步...

501
来自专栏浪淘沙

Redis学习笔记

    (*)前身:Memcached     (*)区别:支持持久化,RDB、AOF                 支持丰富的数据类型

712

扫码关注云+社区