Skip to content

Operational Configuration

Eric Voskuil edited this page Mar 20, 2017 · 20 revisions

Default configuration is generally optimal for operational use with the exception of values that cannot be optimally defaulted due to lack of contextual information. The following settings are recommended and otherwise defaults are sufficient. See also initial configuration and additional information below.

[log]
# debug_file = debug.log
# error_file = error.log
# archive_directory = archive
rotation_size = 10000000

[network]
inbound_connections = 8
outbound_connections = 8
channel_expiration_minutes = 1440
# self = 0.0.0.0:0

[database]
# directory = blockchain
flush_writes = false
# cache_capacity = 10000

[blockchain]
cores = 32

[node]
block_poll_seconds = 60
relay_transactions = true

[server]
query_workers = 1
subscription_limit = 1000
heartbeat_interval_seconds = 5
block_service_enabled = true
transaction_service_enabled = true

Log

See Initial Configuration.

Network

These settings simply restore the defaults after Initial Configuration.

Database

The database should be stored on an SSD for optimal performance. Having flush_writes enabled significantly slows block download. For machines with less than 128 GB RAM a nonzero cache_capacity can improve performance. For an 8 GB machine about 10000 is recommended.

Blockchain

The number of cores should generally be left at the default of zero. However performance can be negatively impacted with more than 32 cores, as the cost of distributing the work starts to exceed the benefit. Setting a checkpoint will cause the most costly aspects of block validation to be bypassed until that checkpoint is reached.

Node

Setting block_poll_seconds = 1 for the small/early blocks prevents unnecessary delays between block polling. Otherwise there will be notable pauses every 2000 headers (or 500 blocks). As the blocks get larger this should be increased to 5 seconds at around block 200,000, 10 seconds at 300,000 and 15 seconds at 400,000. These are just approximations but with a low value you can get a lot of redundant blocks. Transaction relay should be disabled until the node is synchronized.

Server

These settings disabled the server endpoints. This reduces unnecessary endpoint services and and transaction parsing.

Clone this wiki locally