折騰了幾天的心酸史記錄一下希望能幫到遇到一樣問題的朋友。
掛著服務器同步以太坊區塊,到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我都試遍了。
沒了,不提。