彻底解决以太坊Geth客户端网络同步失败问题
文档更新说明
- 最后更新 2018年01月16日
- 首次更新 2018年01月16日
前言
好久没更新博客了(简单说就是没有开发新的iOS项目,老项目需求也不多),从去年下半年底开始就一边做iOS开发,一边做公司相关区块链项目开发和维护.区块链这个领域还是比较前沿,入门门槛比较高,相关中文资料非常少,还有一大堆坑.目前接触的最多的还是智能合约方面,应用级别,后面也会往更深入的方向研究.
问题
回归正题,在使用Geth客服端ipc链接做相关开发的时候,遇到的最最大的问题就是网络同步异常(Synchronisation failed),😂这个太蛋疼了.不管怎么在Geth的启动参数上做手脚,Geth在同步节点的过程中,隔一段时间就会出现同步失败,运气好的时候很快就可以重新链接到其他远程节点继续同步,但是运气不好的话,同步会落后当前网络一大截(比如上个星期六日两天一共落后4000block).
解决方案
每次出现网络同步失败并且很久没有重新同步时,我们的做法就是重启一下客户端.为了”彻底”解决这个问题的方案,我写一个自动管理的脚本代替人工操作,这样我周末出去玩就不用被领导半路叫回来重启服务器了😒.
脚本
1 | !/bin/sh |
定时器
在shell里面并没有包括定时器,而是通过linux下的定时器模块crontab来实现定时功能.
0 0-23 * * * check_eth_node.sh >> cronlog.log
这样就可以实现每小时执行一次脚本了.
结论
实际使用过程中发现这个方案还是挺有效果的,有出现这个问题的同学可以自己试一试.