Когда процесс geth потребляет слишком много памяти, Digital Ocean убивает его (совсем не изящно).
Частично решил проблему, внедрив swap — Настройка ноды geth Ethereum для автоматического запуска в Ubuntu . Но все же получил одно убийство в пределах 2 млн блоков загрузки с запущенным geth --fast --cache=16.
Аналогичный вопрос: можно ли уменьшить использование оперативной памяти go-ethereum (geth)? Ответ здесь - НЕТ.
Есть ли способ ограничить использование памяти geth или, может быть, убить ее «более изящно» , чем Digital Ocean, с помощью чего-то вроде monit ?
Вроде 2 гига свопа и swappiness 30 достаточно, чтобы гет работал без сбоев всего с 512 мб ОЗУ.
Сейчас почти 2 месяца. У меня полная синхронизация (блок 3097083). И ни разу не было сбоев. Поэтому я отмечаю этот ответ как правильный.
Я также слежу за geth с помощью monit , который перезапустит geth в случае сбоя.
Мой конфиг подробно здесь - Как запустить geth на 512Mb RAM дроплете Digital Ocean
С таким ограниченным количеством ресурсов лучше всего работать в режиме облегченного клиента. Да, это альфа-версия, но ее очень удобно использовать, если вы просто играете с ней и не используете большие суммы.
В зависимости от вашего процессора у вас также могут возникнуть проблемы с созданием учетных записей на сервере, если это так, то также добавьте --lightkdf, это позволит менее обременительный метод (хотя, вероятно, немного менее безопасный), чтобы ваш сервер мог завершить процесс создания кошелька до жесткого закодированный порог тайм-аута.
$geth --light --lightkdf
Мы успешно запускаем легкий клиент на BeagleBone Black, у которого также всего 512 МБ оперативной памяти, без проблем.
Наконец, вот некоторые цифры, которые я собрал на Raspberry Pi3 относительно использования ресурсов клиента geth light по состоянию на выпуск, доступный 12 сентября 2016 года:
Запустить его на таком малом объеме оперативной памяти может быть сложно. Я знаю, что разработчики пытались уменьшить использование ОЗУ, чтобы он мог работать на Raspberry PI, но даже у него 1 ГБ ОЗУ.
В дополнение к созданию большого файла подкачки вы можете попробовать сжатие ОЗУ. Это может помочь на VPS с достаточной мощностью ЦП, но ограниченными ресурсами ОЗУ. В Ubuntu вы можете просто запустить команду sudo apt-get install zram-config
, и она установит и настроит ее. Чтобы убедиться, что он работает, запустите команду sudo cat /proc/swaps
, и вы должны увидеть что-то вроде этого:
Filename Type Size Used Priority
/dev/sda4 partition 2095280 0 -1
/dev/zram0 partition 507596 65800 5
/dev/zram1 partition 507596 65728 5
Для автоматического запуска и перезапуска Ethereum в Ubuntu я бы рекомендовал использовать Systemd. Просто отредактируйте конфиг ниже и поместите его в файл /lib/systemd/system/geth.service
:
[Unit]
Description=Ethereum Go client
[Service]
ExecStart=/usr/bin/geth --lightserv 25 --lightpeers 50
Restart=always
RestartSec=30
Type=simple
User=ethereum
[Install]
WantedBy=default.target
Конфигурация Systemd выше указывает, что клиент работает как легкий сервер от имени пользователя ethereum
. Вы должны отредактировать эту конфигурацию по мере необходимости.
Затем запустите команду sudo systemctl enable geth
, чтобы включить автозапуск при загрузке. Используйте следующие команды для запуска, остановки и проверки состояния:
sudo systemctl start geth
sudo systemctl stop geth
sudo systemctl status geth
Если у вас продолжают возникать проблемы, я бы посоветовал вам попробовать экспериментальный легкий клиент. Он предназначен для систем с низким энергопотреблением и имеет гораздо меньшую нагрузку на ОЗУ и жесткий диск.
ExecStart=/usr/bin/geth --light
Дипен Дедания
Такеши