1. 程式人生 > >以太坊geth同步自動關閉問題分析

以太坊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分割槽。

關注

獲得更多資訊和技術,請關注微信公眾號:程式新視界。

目前本人承接以太坊技術相關專案(交易或錢包類),如有需要請聯絡QQ:541075754。
這裡寫圖片描述

相關推薦

geth同步自動關閉問題分析

問題場景 在啟動以太坊geth同步資料的過程中會出現這樣的問題,就是節點同步正常,日誌沒有報異常資訊或者報出一些底層的類異常資訊,隨後geth節點程序自動關閉。 報異常資訊類似於下面的異常: geth sync goroutine 16678 [IO

geth同步的一些注意事項

Imported new state entries 匯入區塊的結構 例如當前的以太坊的正式網的區塊高度是 5860665 那麼需要同步所有的頭部,以及區塊結構,才會開始真正同步區塊的交易內容, 在同步完整區塊之前,console中使用eth.b

geth節點同步親測經歷

看到技術討論群中好多朋友在以太坊節點資料同步的過程中遇到很多疑問,於是親自購買一天伺服器,進行節點同步測試,本文將分享整個測試過程中遇到的問題,及解決方案。 伺服器配置 伺服器配置比較簡單,在阿里雲上購買的2核4GLinux伺服器,作業系統為ce

geth區塊同步

起初我採用虛擬機器在公司網路下作為節點同步,不管是錢包還是geth,始終都會有100個左右區塊同步不下來,導致eth_getBalance等指令失敗。後來切換到了阿里雲上的伺服器上做同步,一個晚上就基本同步完了,建議儘量採用雲主機或者網路環境好的實體機進行同步。下面講一下同步

Geth幾種同步模式

同步模式分類 –fast Enable fast syncing through state downloads –light Enable light client mode –syncmode full 在Geth1.6版本,–fast引數已經改為–

[區塊鏈]2 geth dev模式、互動console、有交易挖礦、自動挖礦

前言 上節我們講了基於ubuntu geth搭建以太坊私有鏈,並以dev方式啟動。什麼是dev模式?有什麼特點本節我們探討。 dev 模式 dev 模式,也叫回歸測試模式,主要用來給開發人員提供一個方便的開發測試環境。 在dev模式下,可以輕鬆的獲得以太幣,方

合約漏洞大集錦——分析、模擬與重現

以太坊的智慧合約,自 DAO以來,漏洞就沒斷過,覺得有必要做一下彙總,以為鑑。 1,The DAO 漏洞。 該漏洞直接導致了以太坊的分叉。應該算是最有名的明星漏洞了。 我們將原始碼的無關部分剔除,只剩關鍵程式碼。看模擬原始碼: pragma solidity ^0.4.18;

[區塊鏈]3 geth 賬戶建立、密碼、解鎖

賬戶操作命令 (1)建立賬戶 檢視此節點下的所有賬戶: eth.accounts (2)檢視塊高 eth.blockNumber (3)建立賬戶 注意:建立賬戶需要用 pesonal

《我學區塊鏈》—— 三十四、智慧合約靜態安全分析

三十四、以太坊智慧合約靜態安全分析        以太坊的智慧合約程式碼審計,筆者找到兩種方式:一是 CertiK,一個提供智慧合約安全服務的區塊鏈平臺,是一條公鏈系統,採用 PoP(proof-of-proof)共識機制,用來分析合約需要消耗該區塊鏈平臺的原生

的儲存層技術分析之二:和LevelDB的介面

LevelDB使用者介面非常簡單,主要就是Put(k,v),Get(k),Delete(k)。以太坊封裝了LevelDB介面,見如下類詳細程式碼: ---------------------------------------------------------------

的儲存層技術分析之四:瘦身

前面一篇文章(分析之三)中提到了以太坊的資料儲存越來越大,有個資料“瘦身”的問題,本文中具體討論下。 以太坊是一個去中心化的區塊鏈系統,資料不是存放在中心伺服器上,而是存在客戶端的硬碟上。目前以太坊發展遇到一個現實問題:安裝過以太坊客戶端,挖過礦的同學想必都知道安裝完後同步

Geth命令詳細

以太坊啟動私有鏈還有一種引數較為複雜的啟動方式,這種的作用是啟動rpc通訊,後續會講解rpc的使用場景。 geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "./blockData" --port "3030

同時安裝Ethereum Wallet和Mist共用區塊資料,並將geth從C盤轉移到其他盤

1):以太坊錢包及Mist下載連結:https://github.com/ethereum/mist/releases/2):解壓兩個檔案到您自己希望的硬碟,本人是D盤3):找到檔案目錄下面的Ethereum Wallet.exe,雙擊執行;4):執行開始同步資料之後,關閉E

geth主網全節點部署

客戶端安裝 person 登陸 root href web 最新 lds 默認 以太坊geth主網全節點部署 #環境 ubuntu 16.4 #硬盤500GB(目前占用200G) #客戶端安裝 # 查看下載頁面最新版 # https://ethereum.github.

區塊鏈實踐(二) Geth入門操作

進入Geth 命令列模式 在上一篇文章中,我們說到,我們可以用下面命令,建立一個新的私有鏈 geth --datadir "./" --nodiscover console 2>>geth.log 進入命令列模式,其中引數 –datadi

Geth客戶端安裝

geth是以太坊的官方客戶端,它是一個命令列工具,提供很多命令和選項,可以執行以太坊節點、建立和管理賬戶、傳送交易、挖礦、部署智慧合約等。下面介紹geth的三種安裝方法:直接下載可執行檔案線上安裝從原始碼編譯安裝方法一 直接下載可執行檔案最簡單的方法是直接下載可執行檔案,以太

交易池(txpool)的分析

在使用節點的過程中txpool是不可不瞭解的知識點,交易從發出到被打包都經歷了哪些過程?txpool在這個過程中又起到什麼作用?今天這篇文章就帶大家簡單瞭解一下。 昨天的文章《以太坊如何清除已發出未打包的交易》已經聊到txpool中未被清除的交易如何清

Geth使用教程

一、Geth建立私鏈1.建立一個genesis.json檔案內容如下:{  "config": {        "chainId": 110,        "homesteadBlock": 0,        "eip155Block": 0,        "eip1

區塊鏈入門三部曲(二) (最全最詳細 )Geth搭建私有鏈

1.     Geth的搭建私有鏈搭建私有鏈首先需要配置一個創業區塊。下圖是創世區塊genesis.jsonConfig:config必不可少,否則建立不成功。ChildId不能為0。Alloc:用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣

geth搭建自己得私鏈(window)

2、 在Geth的安裝目錄下放置初始化創世塊檔案genesis.json,檔案內容如下: { //64位隨機數,用於挖礦,注意他和mixhash 的設定需要滿足以太坊黃皮書的要求 //直接用這個也可以 "nonce":"0x00000000