Посторонним в

Блог-форум Винни Пуха
 
ФорумФорум  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ВходВход  

Поделиться | 
 

 Настройки NIS

Предыдущая тема Следующая тема Перейти вниз 
АвторСообщение
Winnie
Admin


Сообщения : 628
Дата регистрации : 2015-06-10

СообщениеТема: Настройки NIS   2017-01-22, 06:24

Настройки NIS

Ограничение памяти для Java

Рекомендуемые параметры при запуске NIS не менее -Xms512M -Xmx1G. Но если память RAM (оперативная память компьютера) невелика (1-2 GB), то эти параметры не будут оптимальными. В этом случае стоит ограничить использование RAM виртуальной машиной Java, изменив файл ...package\runNIS.bat (Notepad++):
Код:
pushd nis
java -Xms384M -Xmx768M -cp ".;./*;../libs/*" org.nem.core.deploy.CommonStarter
popd

При запуске standalone клиента через NEM монитор, аналогичное изменение делается в файле
...package\runMon.bat:
Код:
pushd mon
java -Xms384M -Xmx768M -cp ".;./*;../libs/*" org.nem.monitor.NemMonitor
popd

За оперативку идет конкуренция процессов, и если Java задействует свой максимум, другим процессам придётся ждать или будет происходить перераспределение памяти, а это тоже время. В итоге комп тормозит. Уменьшив ресурсы для Java, возможно несколько замедлим её работу, но оставим больше простора для других программ. Должен быть выбран какой-то оптимум.
Возможные варианты записи:
  • -Xms512M -Xmx1G (по умолчанию, рекомендуемая настройка для обычных узлов)
  • -Xms512M -Xmx1024M (то же самое)
  • -Xms1G -Xmx2G (возможный вариант для суперузлов)
  • -Xms384M -Xmx768M (рабочий вариант для слабых компьютеров)
Если пределы памяти будут выставлены слишком низкие, работа клиента в какой-то момент времени будет прекращена по прерыванию "OutOfMemoryError".


Исторические данные аккаунта

Если эта функция включена, ваш узел может предоставлять историческую информацию аккаунта, такую как balance / importance / page rank для любого блока! По умолчанию эта функция не включена, поскольку она использует кеширование большего количества данных, которые более интенсивно задействуют память. Включайте эту функцию только в том случае, если у вашего узла достаточно памяти для Java процесса.
https://forum.nem.io/t/nem-beta-0-6-28/1271
http://bob.nem.ninja/docs/index.html#retrieving-historical-account-data

По умолчанию узел предоставляет информацию только о транзакциях:
Код:
nis.optionalFeatures = TRANSACTION_HASH_LOOKUP
опция по данным аккаунта выставляется дополнительно:
Код:
nis.optionalFeatures = TRANSACTION_HASH_LOOKUP | HISTORICAL_ACCOUNT_DATA

Эта функция будет полезна для системы голосования Nanowallet.
Только узлы с флагом HISTORICAL_ACCOUNT_DATA, установленным в конфигурации NIS, обеспечивают поддержку запроса исторических данных аккаунта.
Установка флага означает, что для NIS потребуется много оперативной памяти, рекомендуется минимум 9 GB для Java-процесса NIS!

Bloody Rookie пишет:
If you support HISTORICAL_ACCOUNT_DATA you can support TRANSACTION_HASH_LOOKUP as well and set
nis.transactionHashRetentionTime = -1
in the config. This only need a few hundred MB more RAM.

Ъ!!!11 пишет:
is HISTORICAL_ACCOUNT_DATA api working? when i turn it on in my NIS, it can't be synchronized. Who can help me to solve this issue?
i tried this using my laptop with 16GB RAM WINDOWS 10, how i can configure RAM allocation?

Bloody Rookie пишет:
using standalone version?
if yes the the runNis.bat has "-Xms512M -Xmx1G" as default
you could change to "-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=200"


Расположение папки nem

В папке nem располагаются в т.ч. файл блокчейна (NIS) и файлы кошельков wlt & adb (NCC). Её местоположение можно изменить, отредактировав файлы ...package\ncc\config.properties и ...package\nis\config.properties.
  • Изначально (по умолчанию) параметр, указывающий местоположение папки nem, указывает на папку пользователя C:\Users\<username> (h = home).
    nem.folder = %h/nem
    Такой же эффект будет иметь отсутствие параметра.
  • При работе с флешкой папка nem располагается в рабочей директории (она раздвоится: одна папка nem будет в директории package/ncc, другая папка nem будет в директории package/nis), а параметр местоположения имеет вид
    nem.folder = ./nem
  • Также можно задать конкретную директорию, например
    nem.folder = D:/nem
Примечание: слеши прямые.


Делегированный харвестинг нескольких аккаунтов на одной NIS

Это типичная ситуация, когда несколько аккаунтов стартуют делегированный харвестинг на одной NIS. Количество таких аккаунтов ограничивается параметром
Код:
nis.unlockedLimit = <number of harvested accounts>
в файле конфигурации ...package\nis\config.properties. По умолчанию это количество установлено равным 4. Рекомендуемый разработчиками предел этой величины - не более 10.

Можно указать NEM адреса конкретных аккаунтов, которым разрешено харвестить на данной NIS:
Код:
nis.allowedHarvesterAddresses = NABCDEFGHI1234567XXYYZS53OOSV6MOIGQC3GMB
Если адресов более одного, они перечисляются подряд, с разделением вертикальной чертой (|, вертикальный слеш, пайп), без пробелов:
Код:
nis.allowedHarvesterAddresses = <first address>|<second address>
Если адреса не определены, то это означает отсутствие ограничений по адресам харвестеров:
Код:
nis.allowedHarvesterAddresses =


Автостарт делегированного харвестинга

Чтобы при включении NIS автоматически стартовал делегированный харвестинг определённого аккаунта, надо в параметре Bootkey указать приватный ключ аккаунта делегированного харвестинга (например в NCC через Show Remote Account’s PRIVATE key).

Было:

Должно стать как-то так:

Теперь при старте / перезапуске NIS делегированный харвестинг будет стартовать автоматически, и с указанным именем узла.

В случае, если требуется запуск делегированного харвестинга для более чем одного аккаунта, картина выглядит вот так:

Дополнительных приватных ключей делегированного харвестинга можно указать более одного, в этом случае они перечисляются подряд, с разделением вертикальной чертой (|, пайп), без пробелов:
Код:
nis.additionalHarvesterPrivateKeys = <first key>|<second key>

Возникает закономерный вопрос. Если я буду знать IP чьего-то компьютера, на котором запущен NIS, я смогу сесть к нему на хвост? Ну, во-первых, ничего плохого в этом нет. Но если по какой-то причине такое нежелательно, например компьютер слишком слаб и без того работает на пределе, то возможность таких подключений можно либо ограничить (параметр nis.unlockedLimit =), либо совсем исключить (параметр nis.allowedHarvesterAddresses =).


Рабочая и тестовая сети

Начиная с версии 0.6.*, добавлена возможность переключения между рабочей и тестовой сетями. Чтобы переключиться на тестовую сеть, надо в обоих файлах ...package\nis\config.properties и ...package\ncc\config.properties строку nem.network = mainnet исправить на nem.network = testnet.


Пропускная способность узла

Узлы, которые хотят быть частью сети, должны обладать определенными качествами. Синхронизация с узлом возможна, если его канал имеет скорость не менее 0,1 Mbps [чтобы обеспечить работу в реальном времени]. Иначе, если в блоках много транзакций, это обычно приводит к тайм-ауту [что проявится в зависаниях при синхронизации]. Таким образом, узел с низкой пропускной способностью создает проблемы для других узлов при синхронизации. На первых порах софт NEM не отрабатывает эти ситуации. Но можно предложить два косвенных решения проблемы.
  • Казалось бы, решением проблемы узла с низкой пропускной способностью может быть закрытие его порта 7890. Да, узел перестанет создавать проблемы для других узлов при синхронизации. Но в этом случае узел перестанет активно участвовать в работе сети NEM - с него нельзя будет запросить блоки при синхронизации, он не будет принимать участие в распределении транзакций при генерации блоков.
  • Поэтому лучшим решением будет ограничение размера отдаваемых данных со узла. Для этого рекомендуется использовать Standalone версию и снизить значение параметра nis.maxTransactions (в файле ...package\nis\config.properties) до 500 [tx/pull]. Тогда по запросу наш узел будет отдавать пакет
    блоков, суммарное количество транзакций в которых будет не более 500. В то же время это будет означать, что при запросе блоков от удаленных узлов, вы так же не получите от одного узла много блоков и, таким образом, для синхронизации потребуется больше времени.
Это временная мера и упрощенное решение проблемы узлов с низкой пропускной способностью. В будущем софт NEM будет интеллектуально отрабатывать всё многообразие возникающих при синхронизации узлов ситуаций и в этом ограничении не будет необходимости.


Задержка загрузки блоков при старте

В случае VPS, где работает только NIS, очевидно такая задержка не нужна.
Если запускается NIS, NCC и GUI, задержка потребуется.
nis.delayBlockLoading = true


Изменение портов NIS и NCC

По умолчанию в файле .../nis/config.properties прописаны порты
nem.httpPort = 7890 и nem.httpsPort = 7891
Очевидно, что нет смысла их изменять, т.к. тогда узел перестанет быть видимым для сети.



Конфигурационный файл NIS 0.6.82

# Common configuration
# Short server name (will appear as name for the lock file - example: Nis.lock)

nem.shortServerName = Nis

# In order to be able to start the NEM software (NIS and also NCC) from a removeable media (e.g. USB drive),
# the path, where the database, logs and other files will be saved, can be configured.
# %h - is the home directory of the user (also if the entry is missing) (example: nem.folder = %h/nem)
# . - is the working directory (example: nem.folder = ./nem)

nem.folder = %h/nem

# Specifies the maximum number of threads of the thread pool - default is: 500
# NIS runs more than one thread to be responsive to more than one request at a time.
# The higher this value, the more requests can be answered by NIS at the same time,
# but higher values will increase the system requirements (CPU and memory).

nem.maxThreads = 500

# protocol, host, ports, paths
nem.protocol = http
nem.host = 127.0.0.1
nem.httpPort = 7890
nem.httpsPort = 7891
nem.websocketPort = 7778
nem.webContext =
nem.apiContext =
nem.homePath =
nem.shutdownPath = /shutdown


# Indicates whether or not this node should use a DOS filter
nem.useDosFilter = true

# List of APIs that should not be audited (pipe-separated)
nem.nonAuditedApiPaths = /heartbeat|/status|/chain/height|/chain/score|/chain/last-block|/chain/hashes-from|/push/transaction|/node/ping|/node/info|/node/extended-info|/node/peer-list/active|/account/get|/account/status|/account/unconfirmedTransactions|/account/transfers/all|/account/get/batch

# Denotes the name of the network to join. Available are:
# testnet - the test network that uses test coins and where new features are tested before they are released to the main network.
# mainnet - the main network that uses real coins.

nem.network = mainnet

# Indicates whether or not this node should automatically boot even if no boot information is available.
nis.shouldAutoBoot = true

# NIS auto boot configuration
# CAUTION: Keep in mind that if someone will read key placed here, he might STEAL your XEM
# nis.bootKey: private key of an account that should be used to boot NIS
# nis.bootName: name of the NIS node (you can use anything you like)
#nis.bootKey = #0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
#nis.bootName = foobar

# Indicates whether or not this node should automatically start harvesting on boot.

nis.shouldAutoHarvestOnBoot = true

# Additional private keys that should automatically start harvesting on boot (pipe-separated).
# CAUTION: Keep in mind that if someone will read key placed here, he might STEAL your XEM

nis.additionalHarvesterPrivateKeys =

# The number of regular nodes that this node should communicate with during broadcasts - default is: 5
nis.nodeLimit = 5

# The number of regular nodes that this node should communicate with during time synchronization - default is: 20
nis.timeSyncNodeLimit = 20

# Indicates whether or not this node should send binary payloads.
# Sending binary data instead of JSON data makes requests/responses shorter and thus communication faster.

nis.useBinaryTransport = true

# Indicates if the network time should be used for timestamps - if set to 'false', local system time is used
nis.useNetworkTime = true

# Indicates the automatic IP detection mode:
# - AutoRequired - automatic IP detection is enabled and is required to succeed in order for this node to boot
# - AutoOptional - automatic IP detection is enabled but is not required to succeed in order for this node to boot
# - Disabled - automatic IP detection is disabled

nis.ipDetectionMode = AutoRequired

# Maximum number of unlocked accounts. Meaning: maximum number of accounts that are allowed to use this NIS for harvesting
# Keep the value within a reasonable range, a too large value an cause problems for all harvesting accounts.

nis.unlockedLimit = 4

# Account addresses that are allowed to use this NIS for harvesting (pipe-separated)
# Leave this empty, if you don't want to set any restrictions.

nis.allowedHarvesterAddresses =

# Maximum number of transactions that other nodes should return in the block list returned from /chain/blocks-after - default is: 10000
nis.maxTransactions = 10000

# Maximum number of transactions in a block - default is: 120
nis.maxTransactionsPerBlock = 120

# The targeted time between two blocks in seconds - default is: 60
nis.blockGenerationTargetTime = 60

# The maximum depth of a fork that can be automatically resolved - default is: 360
nis.blockChainRewriteLimit = 360

# List of trusted IP addresses (pipe-separated). Requests from these addresses are treated as local requests.
# NIS usually checks if a request comes from the local machine and if not, certain requests get rejected
# (requests involving the private key). These requests will not get rejected, if they come from an IP in this list.
# valid forms are:
# fully qualified ip: 127.0.0.1, 0:0:0:0:0:0:0:1
# host name: bob.nem.ninja
# partial wildcard ip: 127.0.0.*, 0:0:0:0:0:0:0:*

nis.additionalLocalIps =

# The number of hours to keep the hashes of transactions in memory (-1 = keep forever, 36 is the minimum)
# If transaction hashes are in memory, it is possible to query transactions by hash.

nis.transactionHashRetentionTime = 36

# Optional features supported by the local node (pipe-separated).
# TRANSACTION_HASH_LOOKUP: transactions can be retrieved by supplying the transaction hash.
# HISTORICAL_ACCOUNT_DATA: historical account data can be retrieved.

nis.optionalFeatures = TRANSACTION_HASH_LOOKUP

# Configures the features the block chain should use (pipe-separated).
# 1) Consensus algorithm: the algorithms are mutually exclusive.
# PROOF_OF_IMPORTANCE: block chain will use proof of importance consensus algorithm.
# PROOF_OF_STAKE: block chain will use a simple proof of stake consensus algorithm.
# 2) Weighted balance scheme: the schemes are mutually exclusive.
# WB_TIME_BASED_VESTING: block chain uses a time-based vesting of balances.
# WB_IMMEDIATE_VESTING: block chain immediately vests all balances.
#                       This is only recommended for an environment where the participating
#                       nodes can be trusted, i.e. a private network.
# 3) other:
# STABILIZE_BLOCK_TIMES: stablizes gaps between blocks

nis.blockChainFeatures = PROOF_OF_IMPORTANCE|WB_TIME_BASED_VESTING

# Indicates whether or not the block loading should be delayed.
# If 'true' NIS will be ready to serve (meaning a NCC can connect to NIS) before the blocks are loaded.
# VPSes which run only a standalone NIS will probably not want to delay.
# Users running both NIS and NCC with GUI will probably want to delay.

nis.delayBlockLoading = true



Конфигурационный файл NCC 0.6.82

# Common configuration
# short server name

nem.shortServerName = Ncc

# In order to be able to start nem (nis and also ncc) from a removeable media,
# the location where logs and database should be located can be configured.
# %h - is the home directory of the user (also if the entry is missing).
# . - is simply the working directory.

nem.folder = %h/nem

# Specifies the maximum number of threads of the thread pool.
nem.maxThreads = 50

# protocol, ports, paths
nem.protocol = http
nem.host = 127.0.0.1
nem.httpPort = 8989
nem.httpsPort = 9090
nem.webContext = /ncc/web
nem.apiContext = /ncc/api
nem.homePath = /index.html
nem.shutdownPath = /shutdown


# Indicates whether or not this node should use a DOS filter.
nem.useDosFilter = false

# pipe-separated list of NCC APIs that shouldn't be audited.
nem.nonAuditedApiPaths = /ncc/api/heartbeat|/ncc/api/info/nis/check|/ncc/api/status|/ncc/api/node/status|/ncc/api/info/nis/chain/height

# Denotes the name of the network to join. Available are:
# testnet - the test network that uses test coins and where new features are tested before they are released to the main network.
# mainnet - the main network that uses real coins.

nem.network = mainnet
Вернуться к началу Перейти вниз
Посмотреть профиль http://free.userboard.net
 
Настройки NIS
Предыдущая тема Следующая тема Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
Посторонним в :: Блокчейн проекты :: NEM и связанные с ним проекты :: NEM-
Перейти: