Synchronization

永遠同步

  • December 31, 2021

我正在嘗試使用命令geth --rpcethminer在 ubuntu 16.04 機器上進行探勘。有時它可以工作,但通常在我重新啟動 PC 後,我收到錯誤“網路同步,之後將啟動礦工”。即使在讓它執行了幾天之後,即使它之前在同一天工作過,也會發生這種情況。這意味著同步不起作用,因為在此期間它必須下載的額外數據非常小,通常不會花費數小時。最多需要幾分鐘。

作為解決方法,然後我刪除所有鏈數據並從頭開始同步。這需要一整天的時間,但它會再次起作用。然後在嘗試了幾次並重新啟動後,問題又回來了,我需要重新下載或重新創建所有 30GB。這是一個非常討厭的問題。

我能做些什麼呢?

這是 geth 輸出的最後 10 行:

...
INFO [11-17|16:10:23] Imported new chain segment               blocks=2  txs=118  mgas=8.346  elapsed=11.620s mgasps=0.718  number=4018787 hash=b33409…30e233
INFO [11-17|16:10:37] Imported new chain segment               blocks=3  txs=137  mgas=13.701 elapsed=13.448s mgasps=1.019  number=4018790 hash=e652f8…f20c4e
INFO [11-17|16:10:45] Imported new chain segment               blocks=2  txs=174  mgas=10.659 elapsed=8.115s  mgasps=1.313  number=4018792 hash=5cedef…eaf7ed
INFO [11-17|16:10:53] Network syncing, will start miner afterwards 
INFO [11-17|16:10:55] Imported new chain segment               blocks=2  txs=135  mgas=8.080  elapsed=10.302s mgasps=0.784  number=4018794 hash=cc3e31…f5fff2
INFO [11-17|16:10:55] Network syncing, will start miner afterwards 
INFO [11-17|16:10:57] Network syncing, will start miner afterwards 
INFO [11-17|16:11:04] Imported new chain segment               blocks=1  txs=105  mgas=6.709  elapsed=8.731s  mgasps=0.768  number=4018795 hash=9053b0…379cf6
INFO [11-17|16:11:12] Imported new chain segment               blocks=1  txs=171  mgas=6.669  elapsed=8.369s  mgasps=0.797  number=4018796 hash=4af69b…9418a5
INFO [11-17|16:11:23] Imported new chain segment               blocks=2  txs=155  mgas=10.575 elapsed=10.816s mgasps=0.978  number=4018798 hash=41a86c…fc801d

相應的 ethminer 輸出:

$ ethminer 
miner  16:10:53.876|ethminer  Getting work package...
JSON-RPC problem. Probably couldn't connect. Retrying in 1... 
miner  16:10:55.878|ethminer  Getting work package...
JSON-RPC problem. Probably couldn't connect. Retrying in 1... 
miner  16:10:57.879|ethminer  Getting work package...
^CON-RPC problem. Probably couldn't connect. Retrying in 2... 

更新:

該系統有 16GB 的 RAM,一個快速的 SSD,它的連接速度是 100MBit/s。連接速度測試有很好的結果。

更新:

我今天同步並探勘了它。現在我讀到目前塊號應該是 4570731,但我的下載是 4018737,所以有超過 50 萬個塊失去。我認為我的數據庫已損壞。這可能是原因嗎?如果是,為什麼它會一次又一次地損壞?

更新:

我從昨天開始用--cache 8192. 它現在位於塊 4136031,這意味著它在 24 小時內前進了大約 120000 個塊。這意味著完成同步還需要 5 天以上的時間。

礦工只有在你有一個同步到最後一個區塊的節點時才能工作,因此你的節點需要在礦工啟動之前完成同步。

如果一個節點以空數據庫開始,通常會進行快速同步。快速同步不會載入完整的鏈,這使得它比完全同步更快。

如果您的節點有一段時間沒有執行,它將失去與區塊鏈的同步,並且在您再次打開它時必須同步。但是,一旦數據庫不為空,就不再可能進行快速同步。然後節點進行完全同步。完全同步比快速同步需要更多的資源,尤其是 RAM 似乎與我們的完全同步有關。

因此,根據我的經驗,我建議如下:

  • 確保執行節點的機器上有足夠的 RAM,最少 8GB,更好。
  • 使用選項給 geth 更大的記憶體--cache cache_size_in_MB
  • 選擇盡可能大的記憶體大小,但要根據您的 RAM 大小。我的經驗是,您應該將記憶體大小設置為總 RAM 的 30% 到 40% 左右,否則如果您長時間執行節點,geth 可能會在稍後遇到記憶體不足的問題。所以對於 8GB RAM 試試--cache 3072

請注意,如果您為 geth 分配了足夠的記憶體,您將看到 geth 每個“導入的新鏈段”消息導入幾個 10 個塊。

我的另一個經驗是,如果你沒有為 geth 提供足夠的記憶體大小,geth 就無法更新區塊鏈的本地副本。所以我建議在同步後保留記憶體設置。

首先,同步存在許多非常不同的問題,您遇到的問題很可能是多個問題的重疊症狀,因此幾乎不可能在這裡診斷。最好的選擇是嘗試同步,如果在一天內沒有完成,請刪除鏈數據並從頭開始快速同步(原因見下文)。

同步有兩種,普通同步和快速同步。快速同步只能從頭開始,例如在您刪除鏈數據目錄之後。可以從中間狀態完成正常同步。

迄今為止,在良好的硬體和良好的連接上,快速同步需要幾個小時。但是,即使與此相比,正常的同步也非常慢。如果您有幾個小時沒有同步,那麼使用正常同步是有意義的,因為它可以從以前的狀態繼續,而且幾乎沒有什麼可以趕上的。但是,如果您幾個月沒有同步,那麼進行正常同步是不切實際的。同步可能需要兩週以上的時間,因此在這種情況下,您最好刪除chaindata 目錄並開始快速同步,這在好的設備上需要幾個小時,或者在平均設備和連接上可能需要一天。

請注意,當此答案過時(例如,您在 2018 年或之後閱讀此內容)時,估計時間可能不再反映目前情況,但概念仍然相同:如果您在幾週前同步過,請刪除chaindata 目錄並開始快速同步。

引用自:https://ethereum.stackexchange.com/questions/31006