乙太坊錢包/Geth 的同步速度非常慢,有幫助嗎?
所以我注意到有些人遇到了與我類似的問題,將他們的文章稱為“同步非常慢”和其他變體,但他們抱怨每分鐘大約有 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 同步問題,因為我必須為我正在做的一些開發工作執行完整的節點。
如果您在同步完整節點時遇到問題,這裡有一些提示:
- **使用帶有預置 IOPS 的 SSD 支持的硬體。**快速同步下載和查詢乙太坊狀態樹,這需要大量的隨機磁碟 I/O。Geth 開發人員 karalabe說您不會在 HDD 上獲得吞吐量。我可以肯定這一點——使用希捷 2TB SSHD 沒有希望讓同步足夠快——即使我連續嘗試了近一個月。我很幸運能夠快速同步到 WD Velociraptor RAID 集,它幾乎沒有提供所需的 IOPS。AWS
i3
節點為此工作得很好。任何支持 SSD 的專用伺服器都可以工作。如果你有一個歸檔節點的裸機,你可能會擺脫bcache。- 打開埠 30303。Geth在非 30303 埠上進行連接似乎效果不佳。保持 30303 開放將允許您進行對等,並且似乎有助於解決“同步失敗”錯誤。
- **使用其他人的主網節點引導 geth。**一位名叫 Rocky Fikki 的開發人員似乎經常發布他的 geth 節點所連接的對等節點的要點。如果您無法讓您的 geth 節點與可以為您提供所需塊的人對等,請嘗試從他的節點播種。
- **定期重新啟動您的節點。**Geth 有很多奇怪的故障狀態和錯誤,開發人員正在修復或嘗試修復。有時 Geth 會丟棄它的所有對等點,並且不會重新連接到任何對等點。有時由於某種原因,我總是會看到連續的“同步失敗,丟棄對等點”和“節點數據寫入錯誤”,這些在重新啟動後會解決。有時 Geth 會有對等點,與對等點交談,但從不真正同步任何東西。
Geth 中的同步機制對很多人來說還是有點黑魔法。我沒有嘗試解決 Geth 的同步問題,而是自己編寫了一個名為 Quarian 的看門狗應用程序。每當 Geth 達到我以前見過的故障狀態或滯後太多時,我只需讓它重新啟動 Geth,問題通常會自行解決。 5. **不要將您的筆記型電腦用作主要的開發節點。**始終保持 24x7 連接到網路的執行。對於開發人員,我購買了一個包含三星企業 PM863 SSD的英特爾 NUC,它可以被濫用。當我在我的筆記型電腦上時,我只會連接到它,或者在旅途中從它
rsync
的chaindata
文件夾中連接。還記得我是怎麼說全節點的嗎?對於大多數乙太坊交易,你可能只需要一個輕節點。這些幾乎可以在任何東西上快速同步,如果可以的話,我建議您嘗試使用光同步模型。如果您不需要 Geth 特定的功能,早在上週(2018 年 5 月)我就能夠
parity --warp
在一天左右的時間內完成同步並在 2TB FireCuda SSHD 上使用--db-compaction=hdd
和-snapshot-peers=100
.