常見問題列表
區塊差幾十塊始終同步不完,怎么辦?
這是大家同步數據遇到的第一個難題。當大家興致匆匆的啟動程序,看着區塊離最新的區塊越來越近,難免興奮起來。但當差十幾塊或幾十塊的時候,卻是漫長的等待,於是忍不住要問,出什么問題了嗎?
針對此問題怎么解決,方案有兩個:一,等。程序是在正常運行,需要的就是耐心等待;二、升級硬件配置,重新再來一次。
問題原因:顯示同步剩下幾十塊,那只是同步了區塊的頭部信息,剩下漫長的等待才是在同步真正的區塊結構體。此時如果查看區塊的數據情況,並沒有發生明顯的增加。
在此過程中需慎重重啟,因為一旦重啟將會重新同步結構。
區塊同步一直停留在99%,怎么辦?
此問題同上面的《區塊差幾十塊始終同步不完,怎么辦》,原因也一樣,只是展示的形勢不同而已。
怎么查看同步情況
進入console,使用web3j命令來查詢區塊同步情況:
eth_syncing
如果結構返回false,說明沒有在同步數據。如果結果返回類似下面的內容則證明正在同步:
{
currentBlock: 290584, // 同步到的區塊高度 highestBlock: 891836, // 所鏈接的節點的最高高度 knownStates: 465886, pulledStates: 361434, startingBlock: 0 }
耐心等待knownStates的值同步到最大,此值不斷在變化,目前已經上億。
為什么查詢區塊高度為0
區塊未同步完成常見的表現之一就是查看區塊高度顯示高度為0,比如執行一下命令:
> eth.blockNumber
此命令往往用來驗證是否同步完成,是否同步到的高度和區塊鏈上的高度一致。
為什么查詢賬戶余額為零
為什么在區塊鏈瀏覽器上查詢到地址有余額,但通過本地節點查詢到的余額為0或者不對。
此問題也是因為區塊鏈未同步完成導致的。比如你轉賬一筆資金到一個地址,當前節點未同步到這筆交易,那么這個賬戶的余額便不包含此筆交易,
查詢余額命令:
eth.getBalance("0x8b275d360a5d435e9dfcf27d610362ee2fdf460c")
同步完數據大概多少
經常被問到如此問題,得到的答案也不一樣,這跟每個節點采用的同步方式有關也跟同步時是否重啟過節點和重啟節點的時機有關。目前默認模式同步完成大概150G左右。
用什么同步模式比較好
答案是一般用戶采用默認同步模式即可。慎重使用full模式,同步數據量較大,同步數據時間長,占用空間大。默認模式是采用快速同步,但當這過程中進行了重啟,節點檢測到已經有數據存在,則不會再使用快速同步模式,采用正常同步模式。這也是為什么上面一個問題大家同步的數據不一定相同的原因所在。
怎么能更快的同步
首先,確保網絡帶寬足夠,硬盤最起碼為高速硬盤,固態硬盤更好。其次,確保你的節點鏈接到足夠的活躍節點,才能保證數據源頭的暢通。最后,啟動參數中設置緩存大小,有一定的效果。
緩存參數設置:
--cache value 最小16M,默認128,可根據內存情況適當擴大。
什么樣的配置才能正常同步
目前來看,2核4G帶寬2M硬盤500G的配置已經有些吃不消,還需要適量增加swap來緩解內存的壓力,確保以太坊節點不因OOM而被kill掉。
如果采用的是雲服務器,可以購買100M按流量付費進行同步,同步完成之后再調整過去。
異常日志
如果查看日志發現節點頻繁打印如下日志:
WARN [03-17|16:16:34] Synchronisation failed, retrying err="block download canceled (requested)" WARN [03-17|16:19:04] Synchronisation failed, dropping peer peer=97685428ba8e71a0 err=timeout WARN [03-17|16:22:59] Synchronisation failed, dropping peer peer=142bb4c4f4670f42 err=timeout WARN [03-17|16:24:04] Synchronisation failed, dropping peer peer=5eb409e398c68508 err=timeout WARN [03-17|16:25:13] Synchronisation failed, dropping peer peer=ccc9241c5adf919e err=timeout WARN [03-17|16:27:10] Synchronisation failed, dropping peer peer=eff1874302a0e666 err=timeout WARN [03-17|16:32:52] Synchronisation failed, retrying err="block download canceled (requested)"
可考慮重啟節點或手動添加peers。建議在網上尋找可用節點進行添加,比如星火的節點,或已經同步完成的數據節點。
如果添加查看節點或添加節點
執行以下命令查看節點:
> net.peerCount
添加節點執行以下命令:
>admin.addPeer("enode://0d1b9eed7afe2d5878d5d8a4c2066b600a3bcac2e5730586421af224e93a58cd03cac75bf0b2a62fd8049cd3692a085758cc1e407c8b2c94bb069814a5e8d0f0@209.9.106.245:30303") true
常用以太坊瀏覽器
https://block.bitbank.com/eth/
同步多久可以完成
目前來看,配置較高的用戶基本上24小時左右即可同步完成,配置較低的幾天或幾周都很正常。
正常同步的日志是什么樣子
正常同步數據的過程中日志格式如下:
INFO [03-17|17:02:57] Imported new chain segment blocks=1 txs=380 mgas=7.980 elapsed=45.080s mgasps=0.177 number=5235156 hash=7c7414…b84924 INFO [03-17|17:03:42] Imported new chain segment blocks=1 txs=379 mgas=7.978 elapsed=45.242s mgasps=0.176 number=5235157 hash=eb9541…39b945 INFO [03-17|17:04:32] Imported new chain segment blocks=1 txs=367 mgas=7.964 elapsed=50.074s mgasps=0.159 number=5235158 hash=be6c65…f10378 INFO [03-17|17:05:02] Imported new chain segment blocks=1 txs=150 mgas=4.285 elapsed=29.106s mgasps=0.147 number=5235159 hash=e3c5e2…c67c5c
而非正常同步日志除了異常信息外,還有正在同步數據結構體的日志如下:
INFO [06-18|10:10:34] Imported new state entries count=384 elapsed=131.007ms processed=17120103 pending=23855 INFO [06-18|10:10:35] Imported new state entries count=384 elapsed=116.006ms processed=17120487 pending=23978 INFO [06-18|10:10:36] Imported new state entries count=384 elapsed=134.007ms processed=17120871 pending=24186 INFO [06-18|10:10:38] Imported new state entries count=384 elapsed=305.017ms
轉自:https://blog.csdn.net/wo541075754/article/details/79593953
同步命令:
nohup geth --syncmode "fast" --port "30303" --cache=4096 --datadir /opt/ethbase --rpc --rpcapi db,eth,net,web3,personal,admin,miner --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --maxpeers 40 --maxpendpeers 40 > output.log 2>&1 &