Skip to main content
Version: 3.3.x

System Properties

Before adjusting system properties in BifroMQ, it's necessary to have a thorough understanding of its internal mechanisms, as inappropriate modifications can lead to unexpected behavior. Additionally, these system properties are closely linked with BifroMQ's internal implementation and may not be compatible across different versions. System properties can be set via JVM startup parameters, allowing for flexible customization of BifroMQ's behavior. For example, setting -Dmqtt_utf8_sanity_check=false disables the check for MQTT protocol-defined UTF8 string formats.

Below is a table listing the system properties supported by the current version:

Property KeyDefault ValueDescription
cluster_domain_resolve_timeout_seconds120This parameter specifies the timeout duration for DNS resolution when constructing a cluster using the "clusterConfig.clusterDomainName". The process involves resolving the cluster domain to discover seed nodes that can join the cluster. A successful resolution is marked by obtaining a non-empty set of IP addresses. This parameter controls the maximum amount of time allowed for this DNS resolution to complete successfully.This parameter specifies the timeout duration for DNS resolution when constructing a cluster using the "clusterConfig.clusterDomain". The process involves resolving the cluster domain to discover seed nodes that can join the cluster. A successful resolution is marked by obtaining a non-empty set of IP addresses. The cluster_domain_resolve_timeout_seconds parameter controls the maximum amount of time allowed for this DNS resolution to complete successfully.
ingress_slowdown_direct_memory_usage0.95Threshold for slowing down the acceptance of ingress traffic based on direct memory usage. When the direct memory usage exceeds this threshold, the system will begin to slow down incoming traffic to manage resource consumption effectively.
ingress_slowdown_heap_memory_usage0.9Threshold for slowing down the acceptance of ingress traffic based on heap memory usage. When the heap memory usage exceeds this threshold, the system will initiate measures to slow down incoming traffic to prevent memory overload.
max_slowdown_timeout_seconds5Maximum duration (in seconds) that the slowdown mechanism is allowed to operate before further backpressure protection measures are taken. This ensures that if the slowdown is not sufficient to manage resource usage, additional steps will be implemented to protect the system.
mqtt_utf8_sanity_checkfalseEnables/disables UTF8 sanity checks according to MQTT-1.5.3.
max_mqtt3_client_id_length65535Maximum client ID length for MQTT 3 clients.
max_mqtt5_client_id_length65535Maximum client ID length for MQTT 5 clients.
session_register_num1000Number of concurrent session registers.
data_plane_tolerable_latency_ms1000LTolerable latency in milliseconds for the data plane.
data_plane_burst_latency_ms5000LBurst latency in milliseconds for the data plane.
control_plane_tolerable_latency_ms2000LTolerable latency in milliseconds for the control plane.
control_plane_burst_latency_ms5000LBurst latency in milliseconds for the control plane.
dist_server_dist_worker_call_queuesCPU coresNumber of dist worker call queues.
dist_worker_fanout_parallelismMax(2, CPU cores)Parallelism level for fanout operations.
dist_worker_max_cached_subs_per_tenant200_000LMaximum cached subscriptions per tenant.
dist_worker_topic_match_expiry_seconds5Expiry time in seconds for topic matches.
dist_worker_match_parallelismMax(2, CPU cores / 2)Parallelism level for match operations.
dist_worker_fanout_split_threshold100000Threshold for splitting fanout operations when fanout split hinter enabled.
dist_worker_split_max_cpu_usage0.8Maximum CPU usage threshold for splitting operations when fanout split hinter enabled.
dist_worker_load_estimation_window_seconds5LTime window in seconds for load estimation when fanout split hinter enabled.
dist_worker_split_io_nanos_limit30_000LNanoseconds limit for I/O operations during split when fanout split hinter enabled.
dist_worker_split_max_io_density100Maximum I/O density for split operations when fanout split hinter enabled.
dist_worker_range_voter_count3Number of voters for range decisions.
dist_worker_recovery_timeout_millis10000LTimeout in milliseconds for worker recovery when recovery balancer enabled.
inbox_deliverers100Number of inbox deliverers.
inbox_fetch_queues_per_rangeMax(1, CPU cores / 4)Number of fetch queues per range.
inbox_check_queues_per_range1Number of check queues per range.
inbox_store_load_estimation_window_seconds5LTime window in seconds for load estimation in inbox store.
inbox_store_range_split_limitMax(1, CPU cores / 4)Range split will stop when local inbox store hits the limit.
inbox_store_range_split_max_cpu_usage0.8Maximum CPU usage threshold for range split in inbox store.
inbox_store_range_split_io_nanos_limit30_000Nanoseconds limit for I/O operations during range split in inbox store.
inbox_store_range_split_max_io_density100Maximum I/O density for range split operations in inbox store.
inbox_store_range_voter_count1Number of voters for range decisions in inbox store.
inbox_store_recovery_timeout_millis10000LTimeout in milliseconds for inbox store recovery.
mqtt_deliverers_per_serverCPU coresNumber of MQTT deliverers per server.
retain_store_range_split_limitMax(1, CPU cores / 4)Range split will stop when local retain store hits the limit.
retain_store_range_split_max_cpu_usage0.8Maximum CPU usage threshold for range split in retain store.
retain_store_range_split_io_nanos_limit30_000LNanoseconds limit for I/O operations during range split in retain store.
retain_store_range_split_max_io_density100Maximum I/O density for range split operations in retain store.
retain_store_range_voter_count3Number of voters for range decisions in retain store.
retain_store_load_est_window_seconds5LTime window in seconds for load estimation in retain store.
retain_store_recovery_timeout_millis10000LTimeout in milliseconds for retain store recovery.