服务器geth同步区块被killed问题解决方案

折腾了几天的心酸史记录一下希望能帮到遇到一样问题的朋友。

挂着服务器同步以太坊区块,到400万block以后老是挂。我也是够虎逼的,其实第一次geth挂的时候看到了服务器打出来“Killed” ,我无视了 继续挂着搞。到后面就是几分钟挂一次,我手动重启也搞烦了,索性写了个定时任务1分钟检查一次geth进程挂了没有,挂了拉起了续命。好了,就是这个强行续命,搞得我后面几天都在错误的方向挣扎。

强行续命,还真把区块同步续到了99%(差不多), 但是到了这里,currentBlock开始不动了,knownStates每次一挂重启就变成0再看着knownStates慢慢涨到100万左右又挂,又续命重启变成0  无限循环。。。

经过上面geth一系列捣蛋的跳数字,去geth的issue里面看,发现还真不少和我一样问题的。照着里面有人的方法都失败了。

只有自己来了

从哪开始异常的? 刚开始我以为killed是geth自己输出的, 思考了一下:这好像是kill 进程的输出。。。 然后:cat /var/log/message |grep geth。

尼玛,原来真是触发OOM了。日了狗了, 我同事还给我说人在树莓派上都能装上, 我这几天都怀疑人生了。

问题找到了,内存不够,两种方案 1.  换台高配机器   2.  划分/扩充swap分区(用来放内存溢出的)

我选2:

用硬盘空间开一块swap空间

1.  先看看已经存在的swap分区(有可能什么没有: sudo swapon --show

2. 看下哪里空间够:df -lh

3. 我选的根目录创建一个1G文件: sudo fallocate -l 1G /swapfile

4. sudo mkswap /swapfile

5.使用:sudo swapon /swapfile

6.看看生效没:sudo swapon --show   和 free -h


对了,我的geth版本是1.7.0,  因为 1.7.3/2/1我都试遍了。

没了,不提。

你可能感兴趣的:(服务器geth同步区块被killed问题解决方案)