# Устранение неполадок ноды (Q&A)
В этой статье даны ответы на вопросы, связанные с нодой Waves.
# Как отключиться от других нод?
Ответ: Остановите ноду, убив java процесс Waves или выполните следующую команду:
# sudo systemctl stop waves
Затем задайте значение []
параметра waves.network.known-peers
в вашем файле конфигурации ноды, временно переименуйте файл peers.dat
.
Снова запустите ноду с помощью команды:
java -jar waves.jar waves.conf
# Моя нода, развёрнутая в Docker, падает сразу после запуска. Почему? Что мне делать?
Ответ: Если ваша нода, развернутая в Docker падает сразу после запуска, возможно приложению Docker не хватает памяти.
Решение: Измените настройки в приложении Docker, чтобы предоставить ему больше памяти.
В приложении Docker перейдите в Settings >> Resources >> Advanced.
Задайте 4GB в качестве значения параметра Memory и нажмите Apply & Restart.
# Моя нода упала. Почему? Что мне делать?
Ответ: Нода может упасть по разным причинам. Вы можете определить причину падения, изучив error-сообщения в log-файлах. См. различные кейсы, описанные ниже.
# Ошибка "too many open files"
Если ваш Linux-based компьютер, на котором запущена нода Waves, также выполняет много других задач, в некоторых случаях нода может падать, выдавая следующую ошибку:
Caused by: org.iq80.leveldb.DBException: IO error: /var/lib/waves/data/33837022.ldb: Too many open files
Ошибка вызвана тем, что в операционной системе одновременно открыто слишком много файлов.
Решение: Вы можете поменять значение по умолчанию на 65536
следующих параметров в файле /etc/security/limits.conf
:
* soft nofile 24000 #soft limits
* hard nofile 65000 #hard limits
а также добавить следующую строку в файл /etc/systemd/system.conf
:
DefaultLimitNOFILE=65536
затем перезапустить компьютер.
# Ошибка "OutOfMemory"
Если на вашем компьютере недостаточно выделенной памяти JVM для запуска ноды, тогда нода упадет, а log-файл будет содержать сообщения об ошибках OutOfMemory.
Используйте следующую команду для поиска таких сообщений в вашем log-файле:
sudo tail -n +1 /var/log/waves/waves.log | grep "OutOfMemory"
Используйте следующую команду для поиска таких сообщений в ваших архивных log-файлах:
sudo zgrep -i "OutOfMemory" /var/log/waves/*
Используйте следующую команду если вы пользуетесь systemd и у вас нет log-файлов в директории /var/log/waves/:
sudo journalctl -u waves | grep "OutOfMemory"
Решение: Вы можете увеличить значение параметра -Xmx
(increase JVM maximum Heap Size).
# Процесс ноды остановлен OOM-Killer'ом
Если на вашем компьютере недостаточно оперативной памяти для нужд ОС, это может остановить процесс вашей ноды и другие процессы, которые потребляют большую часть вашей оперативной памяти. В этом случае ваш log-файл будет содержать сообщения об остановке процесса ноды с помощью OOM-killer.
Используйте следующую команду, чтобы проверить, есть ли такие сообщения в вашем log-файле:
$ journalctl -k | grep 'Kill'
Сообщения об остановке процесса нода с помощью OOM-killer похожи на следующие:
kernel: Out of memory: Kill process 6033 (java) score 367 or sacrifice child
kernel: Killed process 6033 (java) total-vm:29930040kB, anon-rss:10625048kB, file-rss:0kB, shmem-rss:24kB
Решение: Убедитесь, что значение параметра -Xmx
не превышает объем доступной RAM-памяти (RAM-памяти хватает для нужд ОС). Если значение параметра -Xmx
превышает доступную RAM-память, вы можете кменьшить значение параметра -Xmx
. Как задать параметр -Xmx
. Также вы можете отключить другие тяжелые процессы, использующие много RAM-памяти и/или уменьшить увеличить объем RAM-памяти подключив swap. Значение параметра -Xmx
должно быть не более 3/4 доступной памяти при подключенном swap.
Если описанные решения не помогли, отправьте команде фрагменты логов с ошибками и фрагменты waves.log
с записями перед падением ноды.
# Процесс запуска ноды «зависает» в самом начале, последнее сообщение в логе — “c.w.d.LevelDBFactory$ - Loaded...” В чем дело?
Если нода давно не перезапускалась, то загрузка базы данных ноды может занять длительное время из-за разрастания файла MANIFEST-<...>
. Это известная проблема LevelDB. Пока загружается база данных, новые записи в логе ноды не появляются.
Ускорить загрузку базы данных невозможно, остается только ждать. Чтобы убедиться, что загрузка продолжается, вы можете посмотреть лог базы данных — файл LOG
, расположенный в каталоге с базой данных. Путь к каталогу определяется параметром waves.directory.db
конфигурации ноды; пути по умолчанию приведены в разделе Конфигурация ноды. Например, для ноды, установленной из DEB-пакета, по умолчанию база данных находится в каталоге /var/lib/waves/data
, и посмотреть лог базы данных можно с помощью команды
tail -f /var/lib/waves/data/LOG
Дополнительно вы можете проверить размер файла MANIFEST-<...>
. Файл также находится в каталоге с базой данных.
# Как задать параметр -Xmx?
Ответ: Вы можете задать значение параметра -J-Xmx
для вашей ноды в файле application.ini
(DEB-нода) или добавив -Xmx
параметр в команду запуска ноды (jar-нода). Используйте следующую команду (замените {*} именами файлов):
java -Xmx2g -jar {*}.jar {*}.conf
Примечание: Ubuntu Server варсии 18.04/20.04 должен иметь как минимум 512MB RAM для нужд ОС. Если у вас менее 2GB RAM-памяти, вы можете раширить её подключив swap.
Например, если вы хотите выделить 4GB памяти для вашей DEB-ноды, откройте файл application.ini
(MainNet DEB node path: /etc/waves/application.ini
), найти параметр -J-Xmx**
и поменять его на -J-Xmx4g
.
# Другие проблемы
Если вы хотите сообщить о других проблемах, связанных с нодой, или обсудить их с сообществом Waves, см. главу Будьте в курсе.