Я использую узел geth на медленном оборудовании. При нынешнем темпе прогресса может пройти несколько дней, прежде чем я смогу загрузить всю цепочку блоков. Есть ли способ ускорить синхронизацию?
Если у вас есть возможность, лучше использовать твердотельный накопитель NVMe.
Если у вас ограниченное пространство на SSD, см. раздел Можно ли разделить цепочку данных на два (или более) места?
Тем не менее, состояние Ethereum велико и становится больше. Будьте терпеливы, и это того стоит.
Предыдущий ответ
--cache
Все упоминают , --fast
но вам, вероятно, также нужно--cache=1024
. Без него вы работаете со значением по умолчанию --cache=128
(Geth 1.6.7).
Увеличение скорости на 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 ГБ) в зависимости от объема оперативной памяти вашего компьютера должно иметь значение.
Опция --fast
командной строки будет синхронизироваться быстрее. Вы должны использовать его с нуля, вы не можете использовать его, если блокчейн уже загружен. Если у вас есть уже синхронизированный узел, вы можете использовать интерфейс Javascript и команды exportChain и importChain для синхронизации вашего узла.
--fast
что это нужно сделать до того, как что- либо будет синхронизировано.Есть 2 способа использования geth
, о которых я знаю
1. синхронизировать с тем--fast
geth --fast
, с которого вы можете начать . Обеспечивает быструю синхронизацию посредством загрузки состояния .
2. используйте import
команду в geth , чтобы сделать это, вам нужен уже синхронизированный блокчейн из geth, и его нужно экспортировать с помощью geth export filename
, который можно импортировать вgeth import filename
Чтобы синхронизировать geth максимально быстро, я рекомендую использовать geth 1.4.6. Старые версии намного медленнее.
Спойлер : Синхронизация HDD очень медленная.
Есть два режима синхронизации:
Совет 1 : Если у вас уже есть гет, синхронизированный на компьютере, вы можете создать резервную копию каталога chaindata и скопировать его на другой компьютер. Я проверяю OS X, Linux и Windows (все в 64-битной версии).
Совет 2. Работает метод экспорта/импорта. Продолжительность импорта очень велика, потому что он проверяет все транзакции.
Совет 3. Если у вас достаточно оперативной памяти и нет SSD, используйте оперативную память в качестве виртуального диска и выберите виртуальный диск с параметром --datadir. Вам нужно 4,2 ГБ для быстрой синхронизации. Когда синхронизация завершится, скопируйте данные цепочки каталогов на исходное место:
Я сделал много тестов на разных версиях для этого вопроса: насколько быстрее синхронизироваться с --jitvm?
Примечание 1: если вы используете HDD, кажется, что синхронизация идет медленнее. Быстрый метод был 4 часа в моей системе.
Примечание 2. RAMDiskCreator для OS X — это бесплатная программа для создания RAM-диска.
Параметры jtvm и cache незначительно влияют на мой рабочий стол.
--fast
устарела и --jitvm
удалена. Нужны ли нам альтернативные флаги?--fast
на --syncmode fast
, поэтому его не рекомендуется использовать, просто нужно преобразовать его в новый параметр.3. синхронизируйте на быстрой машине и скопируйте каталог chaindata на медленную машину . Chaindata переносим на разные архитектуры. Итак, синхронизируйте, аккуратно остановите узел, перенесите каталог chaindata (заменив старый) и запустите узел на другом компьютере. Чтобы минимизировать риск, используйте одинаковые версии geth на обеих машинах. (Я успешно сделал это для x86_64 -> armv7h с Geth 1.4.5, другие тоже .)
Барни Чемберс
эт
Джастин
fast
, аcache
значение по умолчанию — 1024.