Skip to main content
Version: 6.0-SNAPSHOT

System Properties

The table below lists the system properties with their descriptions in alphabetical order. See Configuring with System Properties to learn how to configure Hazelcast using these properties.

note

When you want to reconfigure a system property, you need to restart the members for which the property is modified.

Property NameDefault ValueTypeDescription
hazelcast.aggregation.accumulation.parallel.evaluationtrueboolSpecifies whether to run the aggregation accumulation for multiple entries in parallel. Each Hazelcast member executes the accumulation stage of an aggregation using a single thread by default. In most cases it is useful to do it in parallel.
hazelcast.async.join.strategy.enabledtrueboolControls the behaviour of hazelcast.wait.seconds.before.join and hazelcast.max.wait.seconds.before.join. If set to true, joining members will return immediately without blocking. The cluster remains in the same state until the configured timeouts have elapsed, and new members will behave like lite members. After the timeouts have elapsed and no new members are queued to join, cluster repartitioning is performed in the background. This async strategy reduces latency significantly for new members joining clusters.
hazelcast.backpressure.backoff.timeout.millis60000intControls the maximum timeout in milliseconds to wait for an invocation space to be available. The value needs to be equal to or larger than 0.
hazelcast.backpressure.enabledfalseboolEnable back pressure.
hazelcast.backpressure.max.concurrent.invocations.per.partition100intThe maximum number of concurrent invocations per partition.
hazelcast.backpressure.syncwindow1000stringUsed when back pressure is enabled. The larger the sync window value, the less frequent an asynchronous backup is converted to a sync backup.
hazelcast.cache.invalidation.batch.enabledtrueboolSpecifies whether the cache invalidation event batch sending is enabled or not.
hazelcast.cache.invalidation.batch.size100intDefines the maximum number of cache invalidation events to be drained and sent to the event listeners in a batch.
hazelcast.cache.invalidation.batchfrequency.seconds5intDefines cache invalidation event batch sending frequency in seconds.
hazelcast.client.cleanup.period.millis10000intPeriod, in milliseconds, to check if a client is still part of the cluster.
hazelcast.client.cleanup.timeout.millis120000intTimeout duration to decide if a client is still part of the cluster. If a member cannot find any connection to a client in the cluster, it cleans up the local resources that are owned by that client.
hazelcast.client.max.no.heartbeat.seconds300intTime after which the member assumes the client is dead and closes its connections to the client.
hazelcast.client.internal.skip.cluster.namecheck.during.connectionfalseboolAllows clients to connect without matching the cluster name. This can help if you have a large number of existing clients and it would be impractical to update them. When enabled, cluster name validation is skipped during client authentication.
hazelcast.client.tpc.enabledfalseboolEnables TPC (Thread-Per-Core) on client.
hazelcast.client.tpc.eventloop12intSpecifies maximum number of eventloops.
hazelcast.client.protocol.max.message.bytes1024intClient protocol message size limit (in bytes) for unverified connections. I.e. maximal length of the client authentication message.
hazelcast.clientengine.blocking.thread.count-1intNumber of threads that the client engine has available for processing requests that are blocking, e.g., transactions. When not set, it is set as the value of core size * 20.
hazelcast.clientengine.query.thread.countintNumber of threads to process query requests coming from the clients. Default count is the number of cores multiplied by 1.
hazelcast.clientengine.thread.countintMaximum number of threads to process non-partition-aware client requests, like map.size(), executor tasks, etc. Default count is the number of cores multiplied by 20.
hazelcast.cluster.shutdown.timeout.seconds900intOnce a member initiates a cluster shutdown, it waits for all members to leave the cluster before shutting itself down. This parameter defines a timeout after which there may still be some members in the cluster but the initiator will give up and shut itself down regardless.
hazelcast.cluster.version.auto.upgrade.enabledfalseboolSpecifies whether the automatic cluster version upgrading is enabled.
hazelcast.cluster.version.auto.upgrade.min.cluster.size1intWhen set to a value greater than 1, automatic upgrading waits to reach that cluster size to proceed.
hazelcast.concurrent.window.ms100intProperty needed for concurrency detection so that write through can be done correctly. This property sets the time window, in milliseconds, between the concurrency detection and its notification. Normally in a concurrent system, the window keeps sliding forward so it always remains concurrent. Setting it too high effectively disables the optimization because once a concurrency is detected it will keep that way. Setting it too low could lead to suboptimal performance because the system will try write through and other optimizations even though the system is concurrent.
hazelcast.config.instance.tracking.filestringThe JVM system property which gets a value as the full path of the instance tracking file for each Hazelcast member. It can then be used to verify the name and location of this file. See Instance Tracking
hazelcast.connect.all.wait.seconds120intTimeout to connect all other cluster members when a member is joining to a cluster.
hazelcast.connection.monitor.interval100intMinimum interval in milliseconds to consider a connection error as critical.
hazelcast.connection.monitor.max.faults3intMaximum I/O error count before disconnecting from a member.
hazelcast.data.search.dynamic.config.first.enabledfalseboolEnables performing search for the data structures within the dynamic configurations first. Default behavior is searching within the static configurations.
hazelcast.diagnostics.directoryuser.dirstring

Output directory of the diagnostic log files.

note

For detailed information about the diagnostic tool, along with this and the following diagnostic related system properties, see the Diagnostics section.

hazelcast.diagnostics.enabledfalseboolSpecifies whether diagnostics tool is enabled or not for the cluster.
hazelcast.diagnostics.filename.prefixstringOptional prefix for the diagnostics log file.
hazelcast.diagnostics.invocation.sample.period.seconds0longFrequency of scanning all the pending invocations in seconds. 0 means the Invocations plugin for diagnostics tool is disabled.
hazelcast.diagnostics.invocation.slow.threshold.seconds5longThreshold period, in seconds, that makes an invocation to be considered as slow.
hazelcast.diagnostics.max.rolled.file.count10intAllowed count of diagnostic files within each roll.
hazelcast.diagnostics.max.rolled.file.size.mb50intSize of each diagnostic file to be rolled.
hazelcast.diagnostics.member-heartbeat.max-deviation-percentage100intMaximum allowed deviation for a member-to-member heartbeats.
hazelcast.diagnostics.member-heartbeat.period.seconds10longPeriod for which the MemberHeartbeats plugin of the diagnostics tool runs. 0 means this plugin is disabled.
hazelcast.diagnostics.memberinfo.period.seconds60longFrequency, in seconds, at which the cluster information is dumped to the diagnostics log file.
hazelcast.diagnostics.metrics.period.seconds60longFrequency, in seconds, at which the Metrics plugin dumps information to the diagnostics log file.
hazelcast.diagnostics.operation-heartbeat.max-deviation-percentage33intMaximum allowed deviation for a member-to-member operation heartbeats.
hazelcast.diagnostics.operation-heartbeat.seconds10longPeriod, in seconds, for which the OperationHeartbeats plugin of the diagnostics tool runs. 0 means this plugin is disabled.
hazelcast.diagnostics.pending.invocations.period.seconds0longPeriod, in seconds, for which the PendingInvocations plugin of the diagnostics tool runs. 0 means this plugin is disabled.
hazelcast.diagnostics.stdoutFILEstringConfigures the output for the diagnostics. Available values are FILE, STDOUT, and LOGGER.
hazelcast.diagnostics.slowoperations.period.seconds60longPeriod, in seconds, for which the SlowOperations plugin of the diagnostics tool runs. 0 means this plugin is disabled.
hazelcast.diagnostics.storeLatency.period.seconds0longPeriod, in seconds, for which the StoreLatency plugin of the diagnostics tool runs. 0 means this plugin is disabled.
hazelcast.diagnostics.storeLatency.reset.period.seconds0longPeriod, in seconds, for resetting the statistics for the StoreLatency plugin of the diagnostics tool.
hazelcast.diagnostics.systemlog.enabledtrueboolSpecifies whether the SystemLog plugin of the diagnostics tool is enabled or not.
hazelcast.diagnostics.systemlog.partitionsfalseboolSpecifies whether the SystemLog plugin collects information about partition migrations.
hazelcast.discovery.enabledfalseboolEnables/disables the Discovery SPI lookup over the old native implementations. See Discovery SPI for more information.
hazelcast.discovery.public.ip.enabledfalseboolEnable use of public IP address in member discovery with Discovery SPI. If you set this property to true in your source cluster, please make sure you have set the public addresses for your target members since they will be discovered using their public addresses. Otherwise, they cannot be discovered. See the Public Address section.
hazelcast.dynamicconfig.ignore.conflictsboolWhen it is set to true, Hazelcast does not check if the added dynamic configuration conflicts with an existing dynamic configuration. Existing dynamic configuration is not replaced. Note that, this property is not meant to ignore the conflicts between static configuration and dynamic configuration. If the added dynamic configuration exists in the static configuration of the member, it will throw an exception regardless this property.
hazelcast.enterprise.license.keynullstringHazelcast Enterprise license key.
hazelcast.event.queue.capacity1000000intCapacity of internal event queue.
hazelcast.event.queue.timeout.millis250intTimeout to enqueue events to event queue.
hazelcast.event.sync.timeout.millis5000intTo prevent overloading of the outbound connections, once in a while an event is made synchronous by wrapping it in a dummy operation and waiting for a dummy response. This causes the outbound write queue of the connection to get drained. This timeout configures the maximum amount of waiting time for this response. Setting it to a too low value can lead to an uncontrolled growth of the outbound write queue of the connection.
hazelcast.event.thread.count5intNumber of event handler threads.
hazelcast.graceful.shutdown.max.wait600intMaximum wait in seconds during graceful shutdown.
hazelcast.hd.global.index.enabledtrueboolSpecifies whether the global concurrent High-Density Memory Store indexes are enabled or not.
hazelcast.health.monitoring.delay.seconds20intHealth monitoring logging interval in seconds. NOTE: For detailed information about the health monitoring tool, along with this and the following health monitoring related system properties, see the Health Check and Monitoring section.
hazelcast.health.monitoring.levelSILENTstringHealth monitoring log level. When SILENT, logs are printed only when values exceed some predefined threshold. When NOISY, logs are always printed periodically. Set OFF to turn off completely.
hazelcast.health.monitoring.threshold.cpu.percentage70intWhen the health monitoring level is SILENT, logs are printed only when the CPU usage exceeds this threshold.
hazelcast.health.monitoring.threshold.memory.percentage70intWhen the health monitoring level is SILENT, logs are printed only when the memory usage exceeds this threshold.
hazelcast.heartbeat.failuredetector.typedeadlinestringType of the heartbeat failure detector. See the Failure Detector Configuration section.
hazelcast.heartbeat.interval.seconds5intHeartbeat send interval in seconds.
hazelcast.hidensity.check.freememorytrueboolIf enabled and is able to fetch memory statistics via Java's OperatingSystemMXBean, it checks whether there is enough free physical memory for the requested number of bytes. If the free memory checker is disabled (false), acts as if the check is succeeded.
hazelcast.hotrestart.free.native.memory.percentage (deprecated)15longPercentage of the free memory space that is required for Persistence.
hazelcast.ignoreXxeProtectionFailuresfalsebool

If enabled and when a problem occurs during enabling XML External Entity (XXE) protection, then the problem is ignored and only a warning message is logged.

This property should only be used as a last resort. Hazelcast uses the XXE protection by setting respective XML processor properties. These properties are supported in modern XML processors, e.g., the default one available in Java. An old processor on the classpath, such as Xerces and Xalan, may miss the support and throw an exception during enabling the XXE protection. Setting this system property to true allows ignoring such exceptions.

hazelcast.index.copy.behaviorCOPY_ON_READstringDefines the behavior for index copying on index read/write. See the Copying Indexes section.
hazelcast.init.cluster.versionstringUsed to override the cluster version to use while a Hazelcast instance is not yet part of a cluster. The cluster version assumed before joining a cluster may affect the serialization format of the cluster discovery. The default is to use the member's codebase version. You may need to override it for your member to join a cluster running on a previous cluster version.
hazelcast.initial.min.cluster.size0intInitial expected cluster size to wait before member to start completely.
hazelcast.initial.wait.seconds0intInitial time in seconds to wait before member to start completely.
hazelcast.internal.map.expiration.cleanup.operation.countN/AintCount of scannable partitions in each run of the background expiration task. No default value exists. It is dynamically calculated against the partition count or partition thread count.
hazelcast.internal.map.expiration.cleanup.percentage10intScannable percentage of the entries in the maps' partitions in each run of the background expiration task.
hazelcast.internal.map.expiration.task.period.seconds5intInterval, in seconds, at which the background expiration task is going to run.
hazelcast.internal.map.expired.key.scan.timeout.nanos1000000intTimeout for a partition of a map. Its default value is 1000000 nanoseconds (1 ms). It puts an upper limit for execution of a background expiry operations to prevent the high CPU usages when a partition's size grows.
hazelcast.internal.tpc.enabledfalseboolEnables TPC (Thread-Per-Core) on member.
hazelcast.internal.tpc.eventloop12intSpecifies maximum number of eventloops.
hazelcast.invalidation.max.tolerated.miss.count10intIf missed invalidation count is bigger than this value, relevant cached data is made unreachable.
hazelcast.invalidation.reconciliation.interval.seconds60intPeriod for which the cluster members are scanned to compare generated invalidation events with the received ones from Near Cache.
hazelcast.invocation.max.retry.count250intMaximum number of retries for an invocation. After threshold is reached, the invocation is assumed as failed.
hazelcast.invocation.retry.pause.millis500intPause time between each retry cycle of an invocation in milliseconds.
hazelcast.io.balancer.interval.seconds20intInterval in seconds between IOBalancer executions.
hazelcast.io.input.thread.count3intNumber of socket input threads.
hazelcast.io.output.thread.count3intNumber of socket output threads.
hazelcast.io.thread.count3intNumber of threads performing socket input and socket output. If, for example, the default value (3) is used, it means there are 3 threads performing input and 3 threads performing output (6 threads in total).
hazelcast.io.write.throughtrueboolOptimization that allows sending of packets over the network to be done on the calling thread if the conditions are right. This can reduce the latency and increase the performance for low threaded environments.
hazelcast.jcache.provider.typestringType of the JCache provider. Values can be client or server.
hazelcast.jmxfalseboolEnable JMX agent.
hazelcast.jet.custom.lib.dircustom-libstringThe directory containing the JAR files, that can be used to specify custom classpath for a stage in a pipeline.
hazelcast.jet.idle.cooperative.min.microseconds25intThe minimum time in microseconds the cooperative worker threads will sleep if none of the tasklets made any progress. Lower values increase idle CPU usage but may result in decreased latency. Higher values will increase latency, and very high values (>10000µs) will also limit throughput.
hazelcast.jet.idle.cooperative.max.microseconds500intThe maximum time in microseconds the cooperative worker threads will sleep if none of the tasklets made any progress. Lower values increase idle CPU usage but may result in decreased latency. Higher values will increase latency, and very high values (>10000µs) will also limit the throughput.
hazelcast.jet.idle.noncooperative.min.microseconds25intThe minimum time in microseconds the non-cooperative worker threads will sleep if none of the tasklets made any progress. Lower values increase idle CPU usage but may result in decreased latency. Higher values will increase latency, and very high values (>10000µs) will also limit the throughput.
hazelcast.jet.idle.noncooperative.max.microseconds5000intThe maximum time in microseconds the non-cooperative worker threads will sleep if none of the tasklets made any progress. Lower values increase idle CPU usage but may result in decreased latency. Higher values will increase latency, and very high values (>10000µs) will also limit the throughput.
hazelcast.jet.job.results.max.size1000intMaximum number of job results to keep in the cluster; the oldest results will be automatically deleted after this size is reached.
hazelcast.jet.job.results.ttl.seconds604800intMaximum number of time in seconds the job results are kept in the cluster. They will be automatically deleted after this period is reached.
hazelcast.jet.job.scan.period5000intThe Jet engine periodically checks for new jobs to start and perform cleanup of the unused resources. This property configures how often this check and cleanup is done, in milliseconds.
hazelcast.jmx.update.interval.seconds5intSome JMX MBeans are cached to reduce the overhead of calculating statistics. This parameter determines for how long the MBeans can go stale.
hazelcast.journal.cleanup.threshold1.0floatThe cleanup threshold for the event journal, expressed as a fraction of its capacity (a value between 0.0 and 1.0). When the remaining capacity falls below this threshold, a cleanup may be triggered during put operations to remove expired events (only if a time-to-live for event journal is configured). A value of 0.0 means that no cleanup is performed, while a value of 1.0 means cleanup is triggered after each put operation.
hazelcast.local.localAddressstringIt is an overrider property for the default server socket listener's IP address. If this property is set, then this is the address where the server socket is bound to.
hazelcast.local.publicAddressstringIt is an overrider property for the default public address to be advertised to other cluster members and clients.
hazelcast.lock.max.lease.time.secondsLong.MAX_VALUElongAll locks which are acquired without an explicit lease time use this value (in seconds) as the lease time. When you want to set an explicit lease time for your locks, you cannot set it to a longer time than this value.
hazelcast.logging.details.enabledtrueboolSpecifies whether the cluster name, IP and version should be included in all log messages.
hazelcast.logging.emoji.enabledfalseboolSpecifies whether cluster emojis can be used in log messages. This is just a hint for components calling the logging.
hazelcast.logging.typejdkenumName of logging framework type to send logging events.
hazelcast.map.entry.filtering.natural.event.typesfalseboolNotify entry listeners with predicates on map entry updates with events that match entry, update or exit from predicate value space.
hazelcast.map.eviction.batch.size1intMaximum number of IMap entries Hazelcast will evict during a single eviction cycle. Eviction cycle is triggered by a map mutation. Typically it is fine to evict at most a single entry. However, when you insert values in a loop, each iteration doubles the entry size. In this situation more than just a single entry should be evicted.
hazelcast.map.eviction.sample.count15intCount of the IMap entries in the entry set formed by random samplings from which Hazelcast chooses to remove the optimal entry during an IMap eviction.
hazelcast.map.expiry.delay.seconds10intDelays expiration of backup map entries by the defined amount. This may be useful to prevent some cases where an entry might be observed on the primary replica (partition owner) but not on the backup replica. For instance, when running an entry processor on both primary and backup replicas.
hazelcast.map.invalidation.batchfrequency.seconds10intIf the collected invalidations do not reach the configured batch size, a background process sends them at this interval.
hazelcast.map.invalidation.batch.enabledtrueboolEnable or disable batching. When it is set to false, all invalidations are sent immediately.
hazelcast.map.invalidation.batch.size100intMaximum number of invalidations in a batch.
hazelcast.map.load.chunk.size1000intMaximum size of the key batch sent to the partition owners for value loading and the maximum size of a key batch for which values are loaded in a single partition.
hazelcast.map.loaded.key.limit.per.node50000intMaximum number of keys read into memory at a time. This is a per-member limit to prevent OutOfMemoryError when multiple maps are tried to load concurrently from the same member.
hazelcast.map.replica.scheduled.task.delay.seconds10intScheduler delay for map tasks those are executed on backup members.
hazelcast.map.write.behind.queue.capacity50000stringMaximum write-behind queue capacity per member. It is the total of all write-behind queue sizes in a member including backups. Its maximum value is Integer.MAX_VALUE. The value of this property is taken into account only if the write-coalescing element of the Map Store configuration is false. See Configuring a MapStore for the description of the write-coalescing element.
hazelcast.mastership.claim.timeout.seconds120intThe timeout for which the master member candidate gives up waiting for a response to its mastership claim. After timeout happens, non-responding member will be removed from the member list.
hazelcast.max.join.merge.target.seconds20intSplit-brain merge timeout for a specific target.
hazelcast.max.join.seconds300intJoin timeout, maximum time to try to join before giving.
hazelcast.max.no.heartbeat.seconds60int

Maximum timeout of heartbeat in seconds for a member to assume it is dead.

caution

Setting this value too low may cause members to be evicted from the cluster when they are under heavy load: they will be unable to send heartbeat operations in time, so other members will assume that it is dead.

hazelcast.max.wait.seconds.before.join20intMaximum wait time before join operation. This is an upper limit on the cluster's pre-join phase duration. The pre-join phase starts when the master receives the first join request, and ends after no new members have tried to join for hazelcast.wait.seconds.before.join seconds, or after this upper limit elapsed (whichever comes first). Once the pre-join phase ends, the master moves into the join phase, during which it will only admit members that have already tried joining during the pre-join phase and are still trying to. Once the join phase is complete, the master will again start admitting new members. See hazelcast.async.join.strategy.enabled for how this behaviour can change.
hazelcast.mc.executor.thread.countint2Number of threads that the Management Center service has available for processing the operations sent from the connected Management Center instance.
hazelcast.mc.max.visible.slow.operations.count10intManagement Center maximum visible slow operations count.
hazelcast.member.demote.max.wait600intMaximum wait duration in seconds during the demotion of a data member to a lite member.
hazelcast.member.list.publish.interval.seconds60intInterval at which master member publishes a member list.
hazelcast.member.naming.moby.enabledtrueboolDefines whether the Moby naming should be used for generating instance names when they are not provided by user. Moby name is a short human-readable name consisting of a randomly chosen adjective and the surname of a famous person. If set to true, a Moby name is generated. Otherwise, a name that is concatenation of a static prefix, number and cluster name is provided.
hazelcast.merge.first.run.delay.seconds300intInitial run delay of split-brain/merge process in seconds.
hazelcast.merge.next.run.delay.seconds120intRun interval of split-brain/merge process in seconds.
hazelcast.metrics.collection.frequency5intFrequency, in seconds, of the metrics collection cycle. Note that the preferred way for controlling this setting is Metrics Configuration.
hazelcast.metrics.datastructures.enabledtrueboolSpecifies whether collecting metrics from the distributed data structures is enabled.
hazelcast.metrics.debug.enabledfalseboolEnables collecting debug metrics if set to true, disables it otherwise. Note that this can be set with system property only.
hazelcast.metrics.enabledtrueboolEnables the metrics collection if set to true, disables it otherwise. Note that the preferred way for controlling this setting is Metrics Configuration.
hazelcast.metrics.mc.enabledtrueboolEnables buffering the collected metrics for Management Center if set to true, disables it otherwise. Note that the preferred way for controlling this setting is Metrics Configuration.
hazelcast.metrics.mc.retention5intDuration, in seconds, that the metrics are retained for Management Center. Note that the preferred way for controlling this setting is Metrics Configuration.
hazelcast.metrics.jmx.enabledtrueboolEnables exposing the collected metrics over JMX if set to true, disables it otherwise. Note that the preferred way for controlling this setting is Metrics Configuration.
hazelcast.multicast.groupN/AlongIP address of a multicast group. If not set, then the configuration is read from the multicast configuration.
hazelcast.multicast.socket.set.interfaceN/AlongAllows explicit control if the setInterface() method is called in the Hazelcast multicast discovery service. This configuration may affect the multicast behavior on some platforms. The default value is not specified here, and, in such case, Hazelcast multicast service itself decides if setInterface() should be called.
hazelcast.network.stats.refresh.interval.seconds3intInterval, in seconds, at which the network statistics (bytes sent and received) are re-calculated and published. It is valid only when advanced networking is used.
hazelcast.nio.tcp.spoofing.checksfalseboolControls whether more strict checks upon BIND requests towards a cluster member are applied. The checks mainly validate the remote BIND request against the remote address as found in the socket. By default they are disabled, to avoid connectivity issues when deployed under NAT'ed infrastructure.
hazelcast.operation.backup.timeout.millis5000intMaximum time a caller to wait for backup responses of an operation. After this timeout, operation response is returned to the caller even no backup response is received.
hazelcast.operation.call.timeout.millis60000intTimeout to wait for a response when a remote call is sent, in milliseconds.
hazelcast.operation.fail.on.indeterminate.statefalseboolWhen enabled, an operation fails with IndeterminateOperationStateException, if it does not receive backup acks in time with respect to backup configuration of its data structure, or the member which owns primary replica of the target partition leaves the cluster.
hazelcast.operation.generic.thread.count2intNumber of generic operation handler threads for each Hazelcast member. Its default value is the maximum of 2 and processor count / 2.
hazelcast.operation.priority.generic.thread.count1intNumber of priority generic operation handler threads per member. Having at least 1 priority generic operation thread helps to improve cluster stability since a lot of cluster operations are generic priority operations and they should get executed as soon as possible. If there is a dedicated generic operation thread then these operations don't get delayed because the generic threads are busy executing regular user operations. So unless memory consumption is an issue, make sure there is at least 1 thread.
hazelcast.operation.response.thread.count2intNumber of threads the process responses. The default value gives stable and good performance. If set to 0, the response threads are bypassed and the response handling is done on the IO threads. Under certain conditions this can give a higher throughput.
hazelcast.operation.responsequeue.idlestrategyblockstringSpecifies whether the response thread for internal operations on the member side are blocked or not. If you use block (the default value) the thread is blocked and need to be notified which can cause a reduction in the performance. If you use backoff there is no blocking. By enabling the backoff mode and depending on your use case, you can get a 5-10% performance improvement. However, keep in mind that this increases the CPU utilization. We recommend you to use backoff with care and if you have a tool for measuring your cluster's performance.
hazelcast.operation.thread.count2intNumber of partition based operation handler threads for each Hazelcast member. Its default value is the maximum of 2 and count of available processors.
hazelcast.partial.member.disconnection.resolution.algorithm.timeout.seconds5intTimeout, in seconds, to stop the execution of resolution algorithm when needed, in the case of lots of possible random network disconnections especially in the large clusters.
hazelcast.partial.member.disconnection.resolution.heartbeat.count0intWhen the master (oldest member in the cluster) receives a heartbeat problem report from another member, it first waits for a number of heartbeat rounds to allow other members to report their problems, if there is any. This property sets the number of these rounds.
hazelcast.partition.backup.sync.interval30intInterval for syncing backup replicas in seconds.
hazelcast.partition.count271intTotal partition count.
hazelcast.partition.max.parallel.migrations10intMaximum number of partition migrations to be executed concurrently on a member. Member can be either source or target of the migration. Having too much parallelization can increase the heap memory usage and overload the network during a partition rebalance. Having less parallelization can increase the total migration completion time. The default value, 10, is fine for most of the setups.
hazelcast.partition.max.parallel.replications10intMaximum number of parallel partition backup replication operations per member. When a partition backup ownership changes or a backup inconsistency is detected, the members start to sync their backup partitions. This parameter limits the maximum running replication operations in parallel. The default value, which is the value of hazelcast.partition.max.parallel.migrations, is fine for most of the setups.
hazelcast.partition.migration.chunks.enabledtrueboolSubdivides the migration fragments into chunks to prevent out-of-memory errors during large partition migrations.
hazelcast.partition.migration.chunks.max.migrating.data.in.mb250intLimits the total size of migration data in MB for a single partition migration operation. If you have parallel migrations, the total size of migration data in MB is limited to the number of parallel migrations multiplied by this value.
hazelcast.partition.migration.fragments.enabledtrueboolWhen enabled, which is the default behavior, partitions are migrated/replicated in small fragments instead of one big chunk. Migrating partitions in fragments reduces pressure on the memory and network since smaller packets are created in the memory and sent through the network. Note that it can increase the migration time to complete.
hazelcast.partition.migration.interval0intInterval to run partition migration tasks in seconds.
hazelcast.partition.migration.stale.read.disabledfalseboolHazelcast allows read operations to be performed while a partition is being migrated. This can lead to stale reads for some scenarios. You can disable stale read operations by setting this system property's value to "true". Its default value is "false", meaning that stale reads are allowed.
hazelcast.partition.migration.timeout300intTimeout for partition migration tasks in seconds.
hazelcast.partition.table.send.interval15intInterval for publishing partition table periodically to all cluster members in seconds.
hazelcast.partitioning.strategy.classstringClass name implementing com.hazelcast.core.PartitioningStrategy, which defines key to partition mapping.
hazelcast.persistence.auto.cluster.statetrueboolEnables/disables automatic state management of clusters in Kubernetes Statefulset, which are configured with persistence enabled. When enabled, Hazelcast monitors the runtime environment to detect the intent of shutdown and automates the cluster state management decisions.
hazelcast.persistence.auto.cluster.state.strategystringNO_MIGRATIONSelects the cluster state to be used when members are temporarily missing from a cluster in Kubernetes Statefulset which is configured with persistence enabled. Valid values are NO_MIGRATION and FROZEN.
hazelcast.phone.home.enabledtrueboolEnable or disable the sending of phone home data to Hazelcast's phone home server.
hazelcast.prefer.ipv4.stacktrueboolPrefer IPv4 network interface when picking a local address.
hazelcast.query.max.local.partition.limit.for.precheck3intMaximum value of local partitions to trigger local pre-check for Predicates#alwaysTrue() query operations on maps.
hazelcast.query.optimizer.typeRULESStringType of the query optimizer. For optimizations based on static rules, set the value to RULES. To disable the optimization, set the value to NONE.
hazelcast.query.predicate.parallel.evaluationfalseboolEach Hazelcast member evaluates query predicates using a single thread by default. In most cases, the overhead of inter-thread communications overweight can benefit from parallel execution. When you have a large dataset and/or slow predicate, you may benefit from parallel predicate evaluations. Set to true if you are using slow predicates or have > 100,000s entries per member.
hazelcast.query.result.size.limit-1intResult size limit for query operations on maps. This value defines the maximum number of returned elements for a single query result. If a query exceeds this number of elements, a QueryResultSizeExceededException is thrown. Its default value is -1, meaning it is disabled. See xref:data-structures:preventing-out-of-memory.adoc#setting-query-result-size-limit for a detailed explanation of setting a result size limit.
hazelcast.rest.allow.config.templatingfalseboolEnables configuration variables or templating for updating configuration over the Enterprise Edition REST API.
hazelcast.security.recommendationsnullstringWhen set to any non-null value, security recommendations are logged at the INFO level during the member startup.
hazelcast.serialization.compact.allowlist.classesstring
note

We recommend configuring the zero-config Compact serialization filter through the zero-config-filter element in your member or client configuration, rather than through these system properties. The system properties are provided mainly to ease upgrades from pre-5.7 versions that rely on them for hardened configuration.

Comma-separated list of fully qualified class names to allow for zero-config Compact serialization (ZCCS). If set, only classes on this list (and not on the blocklist) are eligible for ZCCS. Default is empty.

hazelcast.serialization.compact.allowlist.packagesstringComma-separated list of package names to allow for ZCCS. Only classes in the exact package (not sub-packages) are matched.
hazelcast.serialization.compact.allowlist.prefixesstringComma-separated list of class-name prefixes to allow for ZCCS.
hazelcast.serialization.compact.blocklist.classesstringComma-separated list of fully qualified class names to block from ZCCS. Default is empty.
hazelcast.serialization.compact.blocklist.defaultstrueboolControls whether the default blocklist of known-problematic classes is applied for ZCCS. Note that this property is defaults, not defaultsDisabled as seen for other configuration options.
hazelcast.serialization.compact.blocklist.packagesstringComma-separated list of package names to block from ZCCS. Only classes in the exact package (not sub-packages) are matched.
hazelcast.serialization.compact.blocklist.prefixesstringComma-separated list of class-name prefixes to block from ZCCS.
hazelcast.serialization.versionlongVersion of the Hazelcast serialization. Accepted values are between 1 and the highest supported serialization version.
hazelcast.shutdownhook.enabledtrueboolEnables/disables Hazelcast shutdownhook thread. When enabled, the shutdown action is determined according to the value of hazelcast.shutdownhook.policy.
hazelcast.shutdownhook.policyTERMINATEstring

Specifies the behavior when JVM is exiting while the Hazelcast instance is still running. It has two values: TERMINATE and GRACEFUL. The former one terminates the Hazelcast instance immediately. The latter, GRACEFUL, initiates the graceful shutdown which can significantly slow down the JVM exit process, but it tries to retain data safety.

note

Always shutdown Hazelcast explicitly using the HazelcastInstance.shutdown() method; see Graceful Shutdown. It's not recommended to rely on the shutdown hook, this is a last-effort measure.

hazelcast.slow.operation.detector.enabledtrueboolEnables/disables the SlowOperationDetector.
hazelcast.slow.operation.detector.log.purge.interval.seconds300intPurge interval for slow operation logs.
hazelcast.slow.operation.detector.log.retention.seconds3600intDefines the retention time of invocations in slow operation logs. If an invocation is older than this value, it is purged from the log to prevent unlimited memory usage. When all invocations are purged from a log, the log itself is deleted.
hazelcast.slow.operation.detector.stacktrace.logging.enabledfalseboolDefines if the stacktraces of slow operations are logged in the log file. Stack traces are always reported to the Management Center, but by default, they are not printed to keep the log size small.
hazelcast.slow.operation.detector.threshold.millis10000intDefines a threshold above which a running operation in OperationService is considered to be slow. These operations log a warning and are shown in the Management Center with detailed information, e.g., stacktrace. The value should be set at least 1000 ms. The detector cannot reliably detect all operations taking under 1000 ms.
hazelcast.socket.bind.anytrueboolBind both server-socket and client-sockets to any local interface. For ZIP and TAR distributions, this is overridden by false in configuration files.
hazelcast.socket.buffer.directfalseboolSpecifies whether the byte buffers used in the socket should be a direct byte buffer (true) or a regular one (false). When it is set to true, Hazelcast internally uses the method ByteBuffer.allocateDirect (instead of ByteBuffer.allocate) which makes use of the off-heap and may skip the memory copying when performing socket I/O operations. See here for more information.
hazelcast.socket.client.bindtrueboolBind client socket to an interface when connecting to a remote server socket. When set to false, client socket is not bound to any interface.
hazelcast.socket.client.bind.anytrueboolBind client-sockets to any local interface. If not set, hazelcast.socket.bind.any is used as the default.
hazelcast.socket.client.buffer.directfalseboolSpecifies whether the byte buffers used in the socket, when connecting to a client, should be direct or a regular one.
hazelcast.socket.client.receive.buffer.size-1intHazelcast creates all connections with receive buffer size set according to the hazelcast.socket.receive.buffer.size. When it detects a connection opened by a client, then it adjusts the receive buffer size according to this property. It is in kilobytes and its default value is -1.
hazelcast.socket.client.send.buffer.size-1intHazelcast creates all connections with send buffer size set according to the hazelcast.socket.send.buffer.size. When it detects a connection opened by a client, then it adjusts the send buffer size according to this property. It is in kilobytes and its default value is -1.
hazelcast.socket.connect.timeout.seconds10intSocket connection timeout in seconds. Socket.connect() is blocked until either connection is established or connection is refused or this timeout passes. Default is 10 seconds, 0 means infinite.
hazelcast.socket.keep.alivetrueboolSets a socket to be in the SO_KEEPALIVE option.
hazelcast.socket.linger.seconds0intSets the linger value (timeout) for a socket in the SO_LINGER option.
hazelcast.socket.no.delaytrueboolSpecifies whether the delay of sending successive small packets on the network is disabled.
hazelcast.socket.receive.buffer.size128intSocket receive buffer (SO_RCVBUF) size in KB. If you have a very fast network, e.g., 10gbit) and/or you have large entries, then you may benefit from increasing sender/receiver buffer sizes. Use this property and the next one below tune the size.
hazelcast.socket.send.buffer.size128intSocket send buffer (SO_SNDBUF) size in KB.
hazelcast.socket.server.bind.anytrueboolBind server-socket to any local interface. If not set, hazelcast.socket.bind.any is used as the default.
hazelcast.tcp.join.port.try.count3intThe number of incremental ports, starting with the port number defined in the network configuration, that is used to connect to a host (which is defined without a port in TCP/IP member list while a member is searching for a cluster).
hazelcast.tcp.join.previously.joined.member.address.retention.seconds14400intSpecifies how long the address of a member that has previously joined the cluster will be retained/remembered in the TCP/IP joiner, after it leaves the cluster. In a split-brain scenario, this member addresses is used to discover the other cluster by the split-brain handler.
hazelcast.wait.seconds.before.join5intWait time before join operation. This time establishes a pre-join phase time window for newcomer members to make their first join requests. Once hazelcast.wait.seconds.before.join elapses since the last first-timer join request (i.e., where the member hasn't made any previous join request), or the pre-join phase has lasted for hazelcast.max.wait.seconds.before.join seconds, the phase ends and the master starts forming the cluster. See hazelcast.async.join.strategy.enabled for how this behaviour can change.
hazelcast.wan.consumer.ack.delay.backoff.init1intDefines the initial backoff delay for the WAN implementation's consumer. It is used if the acknowledgment delaying feature is enabled.
hazelcast.wan.consumer.ack.delay.backoff.max100intDefines the maximum backoff delay for the WAN implementation's consumer. It is used if the acknowledgment delaying feature is enabled.
hazelcast.wan.consumer.ack.delay.backoff.multiplier1.5DstringDefines the multiplier (the speed of the function) for the backoff delay for the WAN implementation's consumer. It is used if the acknowledgment delaying feature is enabled
hazelcast.wan.consumer.invocation.threshold50000intDefines the pending invocation threshold for the WAN replication implementation. Exceeding this threshold on a WAN consumer member makes the member to delay the WAN acknowledgment, thus slowing down the WAN publishers on the source side that send WAN events to the given WAN consumer. Setting this value to negative disables the acknowledgment delaying feature.
hazelcast.wan.replicate.imap.evictionsfalseboolSpecifies whether IMap objects replicate entry evictions over WAN to target clusters. Use this property with caution. When enabled, ALL evictions, including size or expiration-driven evictions and manual invocations are replicated to target clusters. Setting this property to true does not guarantee data consistency between clusters.
hazelcast.wan.replicate.icache.evictionsfalseboolSpecifies whether ICache objects replicate entry evictions over WAN to target clusters. Use this property with caution. When enabled, ALL evictions, including size or expiration-driven evictions and manual invocations are replicated to target clusters. Setting this property to true does not guarantee data consistency between clusters.
tcp.channels.per.connection1intNumber of parallel connections between members. Not having more connections than IO threads is recommended.