Go-Ethereum

乙太坊錢包/Geth 的同步速度非常慢,有幫助嗎?

  • January 21, 2020

所以我注意到有些人遇到了與我類似的問題,將他們的文章稱為“同步非常慢”和其他變體,但他們抱怨每分鐘大約有 100 個塊。

我有一個問題,Geth 告訴我它每 1 到 6 分鐘就有 1 個塊。

我只剩下 48,806 個區塊(幾個月前我已經完全同步了),而且它們看起來不像是 200,000 範圍內的“問題”區塊。

去年我確實遇到了由於某種原因停止同步的問題,所以我嘗試了所有可能有助於解決問題的修復程序,例如刪除我所有的鏈數據並嘗試不同的硬碟驅動器,沒有任何真正的區別.. .

我上線了; Windows 10 Geth 1.7.3 乙太坊錢包 0.9.3

對此問題的任何幫助將不勝感激。

我設法讓我的錢包在你問這個問題的時候同步,在一個專用的家庭伺服器上執行。然後我在電源故障後忘記執行 geth 幾個小時,我落後了大約 3000 個街區。在接下來的 2 周中,UI 中的“剩餘塊數”一直在變化,低至 1200 到大約 4000。

然後幾天前我升級到了 1.8.0,第二天升級到了 geth 的 1.8.1,此後速度明顯放緩,我現在落後了 7800 個街區。

我的結論是;要麼 geth 是一塊垃圾,不應該使用(我沒有看到任何明顯更好的東西),要麼(也許更有可能)乙太坊有如此重大的設計缺陷,它注定要成功。如果高端的乙太坊專用家庭伺服器趕不上,那麼乙太坊或任何具有類似特徵的區塊鏈都沒有未來。

伺服器花費 45% 的時間等待 I/O,並且 10s 的 TB 已寫入文件系統,這一事實告訴我 a. 開發人員很可能不知道他們在做什麼,b。甚至 SSD 也不是真正的解決方案,因為寫入會很快磨損它們。

我花了太多的錢和太多的努力來試圖讓它發揮作用。“工作量證明”突然有了不同的含義!

我也不知道為什麼對此的回應如此之少,為什麼這不是乙太坊中討論的最重要的話題,並且每個參與其中的人都竭盡全力試圖解決它,除非它被認為是無法解決的,現在是他們順利退出的問題。誰知道?

無論如何,我不是一個快樂的露營者,我確信有很多人喜歡我。

有很多關於 Geth 同步有多糟糕的討論。隨著網路的擴展,同步也不會擴展。雖然去年夏天你可以在幾個小時內快速同步區塊鏈,但現在你需要一些硬體來快速完成 Geth 同步。有一段時間讓我對乙太坊開發感到沮喪,但我已經完成並為自己破解了同步案例。

如果您認為同步還不錯——即使是開發人員在發布 Geth 1.8 “Iceberg”時也拿它開玩笑——“因為

$$ Geth 1.7 $$無法同步。” 截至 2018 年 4 月,全節點的硬體要求假設採用大型固態硬體一位開發人員使用儲存優化伺服器 Azure Standard_L16s,並在 2018 年 4 月大約 8.5 小時內實現了快速同步。Geth 團隊在 m4.2xlarge AWS 實例上測試了同步,執行成本為每小時 0.40 美元。在 AWS 硬體上,完全同步大約需要 20 天和幾 TB

我已經在 Digital Ocean、AWS 和 OVH 上執行了一段時間的 Geth 節點集群,並且我在辦公桌上使用 NUC 進行 LAN 開發。在這個階段,我幾乎遇到了在 GitHub 上送出的所有 Geth 同步問題,因為我必須為我正在做的一些開發工作執行完整的節點。

如果您在同步完整節點時遇到問題,這裡有一些提示:

  1. **使用帶有預置 IOPS 的 SSD 支持的硬體。**快速同步下載和查詢乙太坊狀態樹,這需要大量的隨機磁碟 I/O。Geth 開發人員 karalabe說您不會在 HDD 上獲得吞吐量。我可以肯定這一點——使用希捷 2TB SSHD 沒有希望讓同步足夠快——即使我連續嘗試了近一個月。我很幸運能夠快速同步到 WD Velociraptor RAID 集,它幾乎沒有提供所需的 IOPS。AWSi3節點為此工作得很好。任何支持 SSD 的專用伺服器都可以工作。如果你有一個歸檔節點的裸機,你可能會擺脫bcache
  2. 打開埠 30303。Geth在非 30303 埠上進行連接似乎效果不佳。保持 30303 開放將允許您進行對等,並且似乎有助於解決“同步失敗”錯誤。
  3. **使用其他人的主網節點引導 geth。**一位名叫 Rocky Fikki 的開發人員似乎經常發布他的 geth 節點所連接的對等節點的要點。如果您無法讓您的 geth 節點與可以為您提供所需塊的人對等,請嘗試從他的節點播種。
  4. **定期重新啟動您的節點。**Geth 有很多奇怪的故障狀態和錯誤,開發人員正在修復或嘗試修復。有時 Geth 會丟棄它的所有對等點,並且不會重新連接到任何對等點。有時由於某種原因,我總是會看到連續的“同步失敗,丟棄對等點”和“節點數據寫入錯誤”,這些在重新啟動後會解決。有時 Geth 會有對等點,與對等點交談,但從不真正同步任何東西。

Geth 中的同步機制對很多人來說還是有點黑魔法。我沒有嘗試解決 Geth 的同步問題,而是自己編寫了一個名為 Quarian 的看門狗應用程序。每當 Geth 達到我以前見過的故障狀態或滯後太多時,我只需讓它重新啟動 Geth,問題通常會自行解決。 5. **不要將您的筆記型電腦用作主要的開發節點。**始終保持 24x7 連接到網路的執行。對於開發人員,我購買了一個包含三星企業 PM863 SSD的英特爾 NUC,它可以被濫用。當我在我的筆記型電腦上時,我只會連接到它,或者在旅途中從它rsyncchaindata文件夾中連接。

還記得我是怎麼說節點的嗎?對於大多數乙太坊交易,你可能只需要一個節點。這些幾乎可以在任何東西上快速同步,如果可以的話,我建議您嘗試使用光同步模型。如果您不需要 Geth 特定的功能,早在上週(2018 年 5 月)我就能夠parity --warp在一天左右的時間內完成同步並在 2TB FireCuda SSHD 上使用--db-compaction=hdd-snapshot-peers=100.

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