[ликбез] Запуск полной ноды bitshares-core с минимальным потреблением RAM в пару гигабайт (у меня 1.7)


Пока готовится праздничный стол, порадую себя и окружающих решением еще одной проблемы.

Что такое bitshares dex и какие они сулят бонусы своим пользователям, рассказывать наверное можно долго нудно и в другой раз, поговорю о насущном - об установке полной ноды себе на слабую машину.

В последнее время, официальные публичные ноды сильно лагают, так что клиент отключается от них и автоматически не подключается. Плюс проблема с глючными свечами (когда объем сделки сотые доли цента) решена в последней версии, а публичные еще не обновились, в общем есть потребность в установке своей ноды.

Официально, полная нода, с настройками по умолчанию для работы требует очень много оперативной памяти, на август 2017-го это порядка 40 гигабайтов, и требования растут примерно по 8 гигабайт раз в месяц. Что удивительно, ведь размер блокчейна всего 11 гигабайт. Если вы заверитель, или у вас публичная нода, к которой подключаются ваши пользователи, то у вас почти нет альтернативы - вам потребуется решать эту проблему, либо исправлением кода либо приобретением дорогого сервера.

Обычным же пользователям, у которых небольшое количество оперативной памяти и требуется работа с небольшим количеством аккаунтов, можно запустить ноду с ограниченным функционалом, которая не будет собирать информацию для всех аккаунтов в сети, а только для ваших.

Все очень просто, загрузите или скомпилируйте последнюю версию https://github.com/bitshares/bitshares-core и запустите со следующим ключами:

witness_node --data-dir data --rpc-endpoint "127.0.0.1:8090" --max-ops-per-account 100 --partial-operations true --track-account XXX --track-account YYY

 Замените XXX и YYY на идентификаторы ваших аккаунтов в ковычках, сами идентификаторы смотреть в эксплорере прямо в клиенте, например:

 --track-account ""1.2.xxxxxxxx""

или как рекомендуют в вики:

 --track-account "\"1.2.282\"" "\"1.2.24484\"" "\"1.2.2058\"" 

p.s. спасибо за замечание @kfil в комментариях по поводу удаления --plugins

  • --max-ops-per-account 100 ограничит сохранение количество операций на аккаунт 100 (можно смело поставить и 1000)
  • и самое главное, многократное указание --track-account позволяет перечислить список ваших аккаунтов (по одному), по которым все же будет собираться информация

Нода запускается достаточно долго, при запуске в течении часа идет полное пересканирование уже загруженного блокчейна, а его полная загрузка с нуля - несколько часов (у меня загрузилось за ночь), зато в клиенте Settings -> Access можно добавить свою ноду ws://127.0.0.1:8090 и радоваться быстрому и не лагающему интерфейсу.

 Источник https://github.com/bitshares/bitshares-core/wiki/Memory-reduction-for-nodes

 С новым годом вас, с новыми профитами.


Comments 17


Интересно что с масштабированием и децентрализацией, раз такие требования и они растут. Оперативку же невозможно бесконечно наращивать.

01.01.2018 16:25
0

Сама сеть никакой нагрузки не испытывает! Проблема в том, что к публичным годам стало подключаться слишком много народа, и эти ноды стали лагать.

По поводу заверителей, я пролагаю им тем более не нужно использовать этот плагин.

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

01.01.2018 16:34
0

Спасибо, реально полезно.

01.01.2018 16:48
0

Только это ведь такая нода не может считаться полной, когда ограничены плагины, API, отслеживаемые акки.

02.01.2018 08:00
0

Это личная нода с ограниченным функционалом, суть ограничения - полноценно с ней могут работать только аккаунты, прописанные в --track-account
Не вижу смысла запускать локально только для себя полную ноду, зря расходуя драгоценные ресурсы

И публичные ноды разгрузить - вот это польза для новичков.

02.01.2018 19:31
0

Такой вот вопрос, для чего вообще запускать свою ноду, что это дает? Для своей скорости, чтобы задержек не было, или какой-то профит есть?

06.01.2018 13:17
0

В некоторых случаях, чтобы можно было торговать, не перегружая страницу или не залезая в настройки чтобы сменить ноду из списка по умолчанию, потому что во время сильной нагрузки у меня даже ордера не выставлялись, по таймауту отменялись.

А еще, своя нода выдает информацию с минимальной задержкой - сотня миллисекунд, когда как офф вечно нагружены дают лаг в полторы секунды, мелочь но приятная.

06.01.2018 20:46
0

Спасибо за подсказку, давно такой, я бы сказал рассово верный, способ работать с DEX. Это похоже как в Ardor запустить локальный кошелек, а не юзать оналайн. Они (Ardor) постепенно уходят от он-лайн кошелка.

07.01.2018 12:07
0

Спасибо за разъяснение.

08.01.2018 07:15
0

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

09.01.2018 12:24
0

аналогично, историю своих аккаунтов не отображает..

11.01.2018 21:50
0

Вот конфиг на винде7, все работет и память берет ~1.4g
Завел службой через nssm
max-ops-per-account - главный параметр, который нужно менять под себя.

rpc-endpoint = 127.0.0.1:8090
plugins = account_history market_history
enable-stale-production = false
required-participation = false
max-ops-per-account = 20
bucket-size = [300,900,1800,3600]
history-per-size = 600
max-order-his-records-per-market = 60
max-order-his-seconds-per-market = 259200
[log.console_appender.stderr]
stream=std_error
[log.file_appender.p2p]
filename=logs/p2p.log
[logger.default]
level=info
appenders=stderr
[logger.p2p]
level=error
appenders=p2p

12.01.2018 04:17
0

убрал параметр --plugins и история стала отображаться, при этом памяти потребляет также как и с ним (примерно 1.5 гига)
вот что в конечном итоге получилось:
witness_node --data-dir data --rpc-endpoint "127.0.0.1:8090" --max-ops-per-account 1000 --partial-operations true --track-account "\"1.2.xxxxxx\""
где 1.2.xxxxxx - ID аккаунта

PS
может кто нибудь подсказать как улучшить детализацию графиков..

12.01.2018 21:51
0

в моем случае параметры строки не нужны совсем, они берутся из config.ini в папке с базой.

14.01.2018 07:39
0

огромное спасибо, сам не проверил, мне нужна была только торговля, и другим с ошибкой насоветовал, поправил пост.

14.01.2018 23:04
0

полезно
+1

09.01.2018 14:38
0