Как я могу получить узел geth, чтобы быстро загрузить блок-цепочку?

Я запускаю узел geth на медленном оборудовании. При нынешних темпах прогресса это может за несколько дней до того, как я смогу загрузить всю цепочку. Есть ли способ ускорить синхронизацию?

41 голос | спросил paulmorriss 22 Jpm1000000pmFri, 22 Jan 2016 16:42:04 +030016 2016, 16:42:04

5 ответов


47

EDIT: последний Geth по умолчанию имеет значение cache = 1024, поэтому, если у вас больше RAM, вы можете попробовать увеличить кеш.

Не забывайте --cache

Каждый упоминает --fast, но вам также понадобится --cache=1024 . Без него вы работаете со значением по умолчанию: --cache=128 (Geth 1.6.7).

A 50% -ное увеличение скорости возможно только путем увеличения кеша.

Если вы начинаете с самого начала, используйте: geth --fast --cache=1024

Если у вас уже есть блокблока, используйте: geth --cache=1024

В зависимости от вашей оперативной памяти вы также можете попробовать с более высокими значениями, например --cache=2048.

Источник

  

Если вы используете клиент geth, есть некоторые вещи, которые вы можете сделать для   ускорить время, затрачиваемое на загрузку блок-цепи Ethereum. если ты   выберите флажок --fast, чтобы выполнить быструю синхронизацию Ethereum, вы   не сохранит данные транзакции.

     

Примечание

     

Вы не можете использовать этот флаг после выполнения всех или части обычной синхронизации   что означает, что вы не должны иметь какой-либо части Ethereum   прежде чем использовать эту команду. Смотрите это Ethereum   Ответ на Stack.Exchange для получения дополнительной информации.

     

Ниже приведены некоторые флаги для использования, когда вы хотите синхронизировать свой клиент больше   быстро.

     

- быстро

     

Этот флаг обеспечивает быструю синхронизацию через государственные загрузки, а не   загружая полные данные блока. Это также уменьшит размер   ваш блокчейн резко. ПРИМЕЧАНИЕ. - fast можно запускать только в том случае, если вы   синхронизируя ваш блокчин с нуля и только в первый раз, когда вы   загрузите блокчину по соображениям безопасности. См. Этот пост Reddit для   Дополнительная информация.

     

- кэш = 1024

     

Мегабайты памяти, выделенные для внутреннего кэширования (мин. 16 МБ /база данных   принудительно). Значение по умолчанию - 16 МБ, поэтому это увеличение до 256, 512, 1024 (1 ГБ)   или 2048 (2 ГБ) в зависимости от того, сколько оперативной памяти, которое должен иметь ваш компьютер   разница.

ответил eth 23 Maypm16 2016, 12:33:54
17

Опция командной строки --fast будет синхронизироваться быстрее. Вы должны использовать его с нуля, но вы не можете его использовать, если уже была загружена блок-цепочка. Если у вас есть узел, который уже синхронизирован, вы можете использовать интерфейс Javascript и exportChain и importChain для синхронизации вашего узла.

ответил paulmorriss 22 Jpm1000000pmFri, 22 Jan 2016 16:44:49 +030016 2016, 16:44:49
9

Есть два способа использования geth, о котором я знаю

1. синхронизировать с --fast вы можете начать с geth --fast, который обеспечивает быструю синхронизацию через загрузку состояния

2. используйте команду import в geth для этого вам понадобится уже синхронизированная блок-цепочка из geth, и ее нужно экспортировать с помощью geth export filename, который можно импортировать в geth import filename

ответил niksmac 22 FebruaryEurope/MoscowbMon, 22 Feb 2016 19:29:39 +0300000000pmMon, 22 Feb 2016 19:29:39 +030016 2016, 19:29:39
6

Чтобы синхронизировать geth самый быстрый способ, я рекомендую использовать geth 1.4.6. Старые версии медленнее.

Спойлер : Синхронизация жесткого диска очень медленная.

Существует два режима синхронизации:

  • geth - fast --cache 1024 --jitvm: этот метод очень быстро работает на мощном компьютере (25 минут на моей системе i7 с четырьмя ядрами 16Go, SSD и Gbit /s). Он использует 4,5 ГБ на диске
  • geth --cache 1024 --jitvm: этот метод медленнее (3 часа на моей системе i7 четырехъядерный 16Go, SSD и Gbit /s). Он использует 21 ГБ на диске

Совет 1 . Если вы уже синхронизировали geth на компьютере, вы можете создать резервную копию каталога chaindata и скопировать его на другой компьютер. Я проверяю OS X, Linux и Windows (все в 64-битной версии).

Совет 2 . Используется метод экспорта /импорта. Длительность импорта очень велика, потому что он проверяет все транзакции.

Совет 3 . Если у вас достаточно ОЗУ и нет SSD, используйте RAM в качестве ramdisk и выберите свой ramdisk с параметром --datadir. Для быстрой синхронизации требуется 4,2 ГБ. Когда синхронизация будет завершена, скопируйте каталоги данных в исходное место:

  • ~ /.ethereum on linux
  • ~ /Library /Ethereum on os x
  • % APPDATA% \ Ethereum в Windows

Я сделал много тестов для разных версий для этого вопроса: Насколько быстрее синхронизируется с --jitvm?

Примечание 1: если вы используете жесткий диск, кажется, что синхронизация происходит медленнее. Быстрый метод был 4h в моей системе.

Примечание 2: RAMDiskCreator в OS X является бесплатным для создания RAM-диска.

jitvm и параметры кеша оказывают незначительное влияние на мою скамью

ответил Ellis 7 J0000006Europe/Moscow 2016, 22:31:23
5

3. синхронизация на быстрой машине и копирование каталога цепочек каталогов на вашу медленную машину . Цепочки данных переносимы по всем архитектурам. Итак, синхронизация, чистота узла, передача каталога chaindata (замена старого) и запуск узла на другом компьютере. Чтобы свести к минимуму риск, используйте одинаковые версии geth на обеих машинах. (Я сделал это для x86_64 -> armv7h успешно с Geth 1.4.5, другие сделали тоже .)

ответил redfish 29 Mayam16 2016, 11:21:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132