Skip to main content
Version: 3.0.0

Node Configuration Parameters

Node configuration is individual for each node and is not shared across the whole cluster.

In Ignite 3, you can create and maintain configuration in either HOCON or JSON. The configuration file has a single root "node," called ignite. All configuration sections are children, grandchildren, etc., of that node.

Checking Node Configuration

To get node configuration, use the CLI tool.

  • Start the CLI tool and connect to the node.
  • Run the node config show command.

The CLI tool will print the full node configuration. If you only need a part of the configuration, you can narrow down the search by providing the properties you need as the command argument, for example:

node config show ignite.clientConnector

Changing Node Configuration

Node configuration is changed from the CLI tool. To change the configuration:

  • Start the CLI tool and connect to the node. This becomes the "default" node for subsequent CL commands.
  • To update the default node's configuration, run the node config update command and provide the update as the command argument, for example:
node config update ignite.clientConnector.connectTimeoutMillis=10000
  • To update the configuration of a node other than the default one, run the node config update command with the target node explicitly specified. For example, for node named node1:
node config update -n node1 ignite.nodeAttributes.nodeAttributes.clientConnector="10900"
  • Restart the node to apply the configuration changes.

Exporting Node Configuration

If you need to export node configuration to a HOCON-formatted file, use the following command:

bin/ignite3 node config show > node-config.conf

Configuration Parameters

Client Connector Configuration

See the Clients section for information on configuring client connector.

Compute Configuration

{
"ignite" : {
"compute" : {
"queueMaxSize" : 2147483647,
"statesLifetimeMillis" : 60000,
"threadPoolSize" : 10
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
queueMaxSize2147483647Maximum number of compute tasks in queue.YesYes1 - Integer.MAX_VALUE
statesLifetimeMillis60000The lifetime of job states after the job finishes, in milliseconds.YesYes0 - inf
threadPoolSize10The number of threads available to compute jobs.YesYes1 - Integer.MAX_VALUE

Code Deployment Configuration

{
"ignite" : {
"deployment" : {
"location" : "deployment"
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
locationdeploymentRelative path to folder in the working directory. All deployment units content will be stored there.YesNoA valid path

Failure Handler Configuration

{
"ignite" : {
"failureHandler" : {
"dumpThreadsOnFailure" : true,
"dumpThreadsThrottlingTimeoutMillis" : 10000,
"handler" : {
"ignoredFailureTypes" : [
"systemWorkerBlocked", "systemCriticalOperationTimeout"
],
"type" : "noop"
},
"oomBufferSizeBytes" : 16384
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
dumpThreadsOnFailuretrueThe number of items that can be expired at once.YesYestrue, false
dumpThreadsThrottlingTimeoutMillis10000Throttling timeout for thread dump generation during failure handling, in milliseconds.YesYes1 - inf
handler.ignoredFailureTypes[systemWorkerBlocked, systemCriticalOperationTimeout]Types of failures that will be ignored.YesYes1 - inf
handler.typenoopFailure handler configuration type.YesYesnoop, stop, stopOrHalt
oomBufferSizeBytes16384Amount of memory reserved in the heap at node start, in bytes.YesYes1 - inf

Network Configuration

In Apache Ignite 3, you can choose between two node discovery types. With STATIC type, you manually specify the node addresses, while MULTICAST type automatically detects nodes on your network, making setup simpler.

  • Example configuration with a STATIC node finder:
{
"ignite" : {
"network" : {
"fileTransfer" : {
"chunkSizeBytes" : 1048576,
"maxConcurrentRequests" : 4,
"responseTimeoutMillis" : 10000,
"threadPoolSize" : 8
},
"inbound" : {
"soBacklog" : 128,
"soKeepAlive" : true,
"soLinger" : 0,
"soReuseAddr" : true,
"tcpNoDelay" : true
},
"listenAddresses" : [],
"membership" : {
"failurePingIntervalMillis" : 1000,
"membershipSyncIntervalMillis" : 30000,
"scaleCube" : {
"failurePingRequestMembers" : 3,
"gossipIntervalMillis" : 200,
"gossipRepeatMult" : 3,
"membershipSuspicionMultiplier" : 5,
"metadataTimeoutMillis" : 3000
}
},
"nodeFinder" : {
"netClusterNodes" : [ "localhost:3344" ],
"type" : "STATIC"
},
"outbound" : {
"soKeepAlive" : true,
"soLinger" : 0,
"tcpNoDelay" : true
},
"port" : 3344,
"shutdownQuietPeriodMillis" : 0,
"shutdownTimeoutMillis" : 15000,
"ssl" : {
"ciphers" : "",
"clientAuth" : "none",
"enabled" : false,
"keyStore" : {
"password" : "********",
"path" : "",
"type" : "PKCS12"
},
"trustStore" : {
"password" : "********",
"path" : "",
"type" : "PKCS12"
}
}
}
}
}
  • To switch to a MULTICAST node finder, update the nodeFinder section in your configuration file to the following:
{
"ignite" : {
"nodeFinder": {
"type": "MULTICAST",
"multicast" : {
"group": "239.192.0.0",
"port": 47401,
"resultWaitTime": 500,
"ttl": -1
}
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
fileTransferFile transfer configuration.
fileTransfer.chunkSizeBytes1048576Chunk size in bytes.YesYes1 - Integer.MAX_VALUE
fileTransfer.maxConcurrentRequests4Maximum number of concurrent requests.YesYes1 - Integer.MAX_VALUE
fileTransfer.responseTimeoutMillis10000Node response timeout during file transfer.YesYes0 - inf
fileTransfer.threadPoolSize8File sender thread pool size.YesYes1 - Integer.MAX_VALUE
inboundServer socket configuration. See TCP documentation and socket documentation for more information.
inbound.soBacklog128The size of the backlog.YesYes0 - Integer.MAX_VALUE
inbound.soKeepAlivetrueDefines if the keep-alive packets are allowed.YesYestrue, false
inbound.soLinger0Defines how long the closed socket should linger.YesYes0 - 65535
inbound.soReuseAddrtrueDefines if the address can be reused.YesYestrue, false
inbound.tcpNoDelaytrueDefines if the TCP no delay option is used.YesYestrue, false
listenAddressesList of addresses (IPs or hostnames) to listen on. If empty, listens on all interfaces. Currently, only a single address is supported. This limitation will be lifted in a future update.YesYesA list of valid addresses separated by comma
membershipNode membership configuration.
membership.failurePingIntervalMillis1000Failure detector ping interval.YesYes0 - inf
membership.membershipSyncIntervalMillis30000Periodic membership data synchronization interval.YesYes0 - inf
membership.scaleCubeScaleCube-specific configuration.
scaleCube.failurePingRequestMembers3Number of members that are randomly selected by a cluster node for an indirect ping request.YesYes1 - inf
scaleCube.gossipIntervalMillis200Gossip spreading interval.YesYes1 - inf
scaleCube.gossipRepeatMult3Gossip repeat multiplier.YesYes1 - inf
scaleCube.membershipSuspicionMultiplier5The multiplier that is used to calculate the timeout after which the node is considered dead.YesYes1 - inf
scaleCube.metadataTimeoutMillis3000The timeout on metadata update operation, in milliseconds.YesYes1 - inf
nodeFinderConfiguration for how the node finds other nodes in the cluster.
nodeFinder.netClusterNodesAddresses of all nodes in the cluster in the host:port format. Applicable when STATIC node finder type is used.YesYesAddresses in a valid format
nodeFinder.typeSTATICNode finder type. Use STATIC to manually configure node addresses.YesYesSTATIC
nodeFinder.typeMULTICASTNode finder type. Use MULTICAST to automatically detect nodes on your network. When using this type, you must also specify a multicast group address.YesYesMULTICAST
nodeFinder.multicast.group239.192.0.0The multicast group address for node discovery.YesYesMulticast address in a valid format
nodeFinder.multicast.port47401The port used for multicast.YesYes0 - 65535
nodeFinder.multicast.resultWaitTime500The time in milliseconds a node waits for responses after a discovery request.YesYes1 - inf
nodeFinder.multicast.ttl-1Sets the maximum number of network hops for multicast packets. By default is set to -1 and uses the default system TTL.YesYes-1 - 255
outboundOutbound request configuration.
outbound.soKeepAlivetrueDefines if the keep-alive packets are allowed.YesYestrue, false
outbound.soLinger0Defines how long the closed socket should linger.YesYes0 - 65535
outbound.tcpNoDelaytrueDefines if the TCP no delay option is used.YesYestrue, false
port3344Node port.YesYesA valid port number
shutdownQuietPeriodMillis0The period during node shutdown when Ignite ensures that no tasks are submitted for the before the node shuts itself down. If a task is submitted during this period, it is guaranteed to be accepted.YesNo0 - inf
shutdownTimeoutMillis15000The maximum amount of time until the node is shut down regardless of if new network messages were submitted during shutdownQuietPeriodMillis.YesNo0 - inf
ssl.ciphers""List of ciphers to enable, comma-separated. Empty for automatic cipher selection.YesYesTLS_AES_256_GCM_SHA384, etc. (standard cipher ids)
ssl.clientAuthWhether the SSL client authentication is enabled and whether it is mandatory.YesYesnone, optional, require
ssl.enabledfalseDefines if SSL is enabled for the node.YesYestrue, false
ssl.keyStoreSSL keystore configuration.
keyStore.password********Keystore password.YesYesA valid password
keyStore.pathPath to the keystore.YesYesA valid path
keyStore.typePKCS12Keystore type.YesYesPKCS12, JKS
ssl.trustStoreSSL trustsore configuration.
trustStore.password********Truststore password.YesYesA valid password
trustStore.pathPath to the truststore.YesYesA valid path
trustStore.typePKCS12Truststore type.YesYesPKCS12, JKS

Node Attributes

{
"ignite" : {
"nodeAttributes" : {
"nodeAttributes" : { }
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
nodeAttributesA collection of node attributes used for dynamically distributing data only to those nodes that have the specified attribute values.YesYesA JSON-formatted object

RAFT Configuration

{
"ignite" : {
"raft" : {
"fsync" : false,
"installSnapshotTimeoutMillis" : 300000,
"logStripesCount" : 4,
"logYieldStrategy" : false,
"responseTimeoutMillis" : 3000,
"retryDelayMillis" : 200,
"retryTimeoutMillis" : 10000,
"stripes" : 10,
"volatileRaft" : {
"logStorageBudget" : {
"name" : "unlimited"
}
}
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
fsyncfalseSpecifies whether fsync is used to safely write Raft log entries to disk on table partition groups before confirming replication. If set to false, user data may be lost in the event of an OS crash, but an Ignite application crash will not result in data loss.YesYestrue, false
installSnapshotTimeoutMillis300000The maximum period allowed for transferring a RAFT snapshot to a recipient and installing it.YesYes1 - inf
logStripesCount4Amount of stripes in disruptors of log managerYesYes1 - inf
logYieldStrategyfalseIf true, the non-blocking strategy is used in the Disruptor of log manager.YesYestrue, false
responseTimeoutMillis3000Period for which the RAFT client will try to receive a response from a remote peer.YesNo0 - inf
retryDelayMillis200Delay between re-sends of a failed request by the RAFT client.YesNo0 - inf
retryTimeoutMillis10000Period for which the RAFT client will try to receive a successful response from a remote peer.YesNo0 - inf
volatileRaft.logStorageBudget.nameunlimitedThe name of the log storage budget used by the node.YesNo, but the new values are only applied to new partitionsunlimited, entry-count

REST Configuration

{
"ignite" : {
"rest" : {
"dualProtocol" : false,
"httpToHttpsRedirection" : false,
"port" : 10300,
"ssl" : {
"ciphers" : "",
"clientAuth" : "none",
"enabled" : false,
"keyStore" : {
"password" : "********",
"path" : "",
"type" : "PKCS12"
},
"port" : 10400,
"trustStore" : {
"password" : "********",
"path" : "",
"type" : "PKCS12"
}
}
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
dualProtocolfalseDefines if both HTTP and HTTPS protocols are used by the endpoint.YesYestrue, false
httpToHttpsRedirectionfalseDefines if requests to HTTP endpoint will be redirected to HTTPS.YesYestrue, false
port10300The port of the node's REST endpoint.YesYesA valid port
ssl.ciphersExplicitly set node SSL cipher.YesYesSee acceptable values
ssl.clientAuthClient authorization used by the node, if any.YesYesnone, optional, require
ssl.enabledfalseDefines if SSL is enabled for the node.YesYestrue, false
ssl.keyStoreSSL keystore configuration.
keyStore.password********Keystore password.YesYesA valid password
keyStore.pathPath to the keystore.YesYesA valid path
keyStore.typePKCS12Keystore type.YesYesPKCS12, JKS
ssl.port10400Port used for SSL connections.YesYesA valid port
ssl.trustStoreSSL trustsore configuration.
trustStore.password********Truststore password.YesYesA valid password
trustStore.pathPath to the truststore.YesYesA valid path
trustStore.typePKCS12Truststore type.YesYesPKCS12, JKS

SQL Configuration

{
"ignite" : {
"sql" : {
"execution" : {
"threadCount" : 4
},
"planner" : {
"threadCount" : 4
}
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
execution.threadCount4Number of threads for query execution.YesYes1 - Integer.MAX_VALUE
planner.threadCount4Number of threads for query planning.YesYes1 - Integer.MAX_VALUE

Storage Configuration

Ignite Persistence is designed to provide a quick and responsive persistent storage. When using the persistent storage, Ignite stores all the data on disk, and loads as much data as it can into RAM for processing. When persistence is enabled, Ignite stores each partition in a separate file on disk. In addition to data partitions, Ignite stores indexes and metadata.

Each Ignite storage engine can have several storage profiles.

Checkpointing is the process of copying dirty pages from RAM to partition files on disk. A dirty page is a page that was updated in RAM but was not written to the respective partition file. After a checkpoint is created, all changes are persisted to disk and will be available if the node crashes and is restarted. Checkpointing is designed to ensure durability of data and recovery in case of a node failure. This process helps you utilize disk space frugally by keeping pages in the most up-to-date state on disk.

{
"ignite" : {
"storage" : {
"engines" : {
"aimem" : {
"pageSizeBytes" : 16384
},
"aipersist" : {
"checkpoint" : {
"checkpointDelayMillis" : 200,
"checkpointThreads" : 4,
"compactionThreads" : 4,
"intervalMillis" : 180000,
"intervalDeviationPercent" : 40,
"logReadLockThresholdTimeout" : 0,
"readLockTimeoutMillis" : 10000,
"useAsyncFileIoFactory" : true
},
"pageSizeBytes" : 16384
},
"rocksdb" : {
"flushDelayMillis" : 100
},
"profiles" : [ {
"engine" : "aipersist",
"name" : "default",
"replacementMode" : "CLOCK",
"sizeBytes" : 268435456
},
{
"engine" : "aimem",
"name" : "default_aimem",
"emptyPagesPoolSize" : 100,
"initSizeBytes" : 268435456,
"maxSizeBytes" : 268435456
},
{
"engine" : "rocksdb",
"name" : "default_rocksdb",
"sizeBytes" : 268435456,
"writeBufferSizeBytes" : 67108864
} ]
}
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
engines.aimemAimem configuration.
aimem.pageSizeBytes16384The size of pages in the storage, in bytes.YesYes1024-16384
engines.aipersistAipersist configuration.
aipersist.checkpoint.checkpointDelayMillis200Delay before staring a checkpoint after receiving the command.YesNo0 - inf
aipersist.checkpoint.checkpointThreads4Number of CPU threads dedicated to checkpointing.YesYes1 - inf
aipersist.checkpoint.compactionThreads4Number of CPU threads dedicated to data compaction.YesYes1 - inf
aipersist.checkpoint.intervalMillis180000Interval between checkpoints in milliseconds.YesNo0 - inf
aipersist.checkpoint.intervalDeviationPercent40Jitter that will be added or subtracted from time period till next scheduled checkpoint (percentage).YesNo0-100
aipersist.checkpoint.logReadLockThresholdTimeoutMillis0Threshold for logging long read locks, in milliseconds.YesYes0 - inf
aipersist.checkpoint.readLockTimeoutMillis10000Timeout for checkpoint read lock acquisition, in milliseconds.YesYes0 - inf
aipersist.checkpoint.useAsyncFileIoFactorytrueIf Ignite uses asynchronous file I/O operations provider.YesYestrue, false
aipersist.pageSizeBytes16384The size of pages in the storage, in bytes.NoN/A1024-16384
engines.rocksdbRocksdb configuration.
rocksdb.flushDelayMillis100Delay before executing a flush triggered by RAFT.YesRefreshed on engine registration0 - inf
profilesThe list of available storage profiles.
engineThe storage engine.NoN/Aaimem, aipersist, rocksdb
nameUser-defined profile name.NoN/AA valid name
replacementModeCLOCKSets the page replacement algorithm.YesYesCLOCK, RANDOM_LRU, SEGMENTED_LRU
size256MbMemory (RAM) region size.YesYesMin 256Mb, max defined by the addressable memory limit of the OS
aipersist.sizeBytes268435456Memory (offheap) region size.YesYesMin 268435456, max defined by the addressable memory limit of the OS
aipersist.replacementModeCLOCKSets the page replacement algorithm.YesYesCLOCK, RANDOM_LRU, SEGMENTED_LRU
aimem.initSizeBytes268435456Initial memory region size in bytes, when the used memory size exceeds this value, new chunks of memory will be allocated.YesYesMin 256Mb, max defined by the addressable memory limit of the OS
aimem.maxSizeBytes268435456Maximum memory region size in bytes.YesYesMin 256Mb, max defined by the addressable memory limit of the OS
rocksdb.sizeBytes268435456Size of the rocksdb offheap cache.YesYesMin 0, max defined by the addressable memory limit of the OS
rocksdb.writeBufferSizeBytes67108864Size of rocksdb write buffer.YesYesMin 1, max defined by the addressable memory limit of the OS

System Configuration

This section describes internal properties, which are used by a number of Ignite components. Although you can edit these properties in the same way you edit all others by using the node config update CLI command, we suggest that you discuss the proposed changes with the Ignite support team. The properties can apply to a specific node or to the cluster as a whole.

note

Note that the property names are in camelCase.

{
"ignite" : {
"system" : {
"cmgPath" : "",
"metastoragePath" : "",
"partitionsBasePath" : "",
"partitionsLogPath" : "",
"properties":[],
"criticalWorkers" : {
"livenessCheckIntervalMillis" : 2000,
"maxAllowedLagMillis" : 5000,
"nettyThreadsHeartbeatIntervalMillis" : 1000
}
}
}
}
PropertyDefaultDescriptionChangeableRequires RestartAcceptable Values
system.cmgPathThe path the cluster management group information is stored to. Only applicable if the node is part of CMG. By default, data is stored in {IGNITE_HOME}/work/cmg. It is recommended to only change this path on an empty node.YesYesValid absolute path.
system.metastoragePathThe path the cluster meta information is stored to. Only applicable if the node is part of the metastorage group. By default, data is stored in {IGNITE_HOME}/work/metastorage. It is recommended to only change this path on an empty node.YesYesValid absolute path.
system.partitionsBasePathThe path data partitions are saved to on the node. By default, partitions are stored in {IGNITE_HOME}/work/partitions. It is recommended to only change this path on an empty node.YesYesValid absolute path.
system.partitionsLogPathThe path RAFT log the partitions are stored at. By default, this log is stored in {system.partitionsBasePath}/log. It is recommended to only change this path on an empty node.YesYesValid absolute path.
system.propertiesSystem properties used by the Ignite components.YesYesA map of properties.
system.criticalWorkers.livenessCheckIntervalMillis2000Interval between liveness checks (ms) performed by the critical worker infrastructure.YesYes1 - inf (not greater than half of maxAllowedLagMillis)
system.criticalWorkers.maxAllowedLagMillis5000Maximum allowed delay from the last heartbeat to the current time (ms). If exceeded, the critical worker is considered to be blocked.YesNo1 - inf (should be at least twice livenessCheckInterval)
system.criticalWorkers.nettyThreadsHeartbeatIntervalMillis1000Interval between heartbeats used to update the Netty threads' heartbeat timestamps (ms).YesYes1 - inf