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 Key | Default Value | Description |
---|---|---|
client_redirect_check_interval_seconds | 600 | The client redirection check interval in seconds |
cluster_domain_resolve_timeout_seconds | 120 | This 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. |
control_plane_burst_latency_ms | 5000L | The max latency in milliseconds tolerated for the control plane burst. |
data_plane_burst_latency_ms | 5000L | The max latency in milliseconds tolerated for the data plane burst. |
dist_server_dist_worker_call_queues | CPU cores | Number of dist worker call queues. |
dist_worker_inline_fanout_threshold | 1000 | The threshold of the fanout to be executed in calling thread |
dist_worker_fanout_parallelism | Max(2, CPU cores) | Parallelism level for fanout operations. |
dist_worker_fanout_split_threshold | 100000 | Threshold for splitting fanout operations when fanout split hinter enabled. |
dist_worker_load_estimation_window_seconds | 5L | Time window in seconds for load estimation when fanout split hinter enabled. |
dist_worker_match_parallelism | Max(2, CPU cores / 2) | Parallelism level for match operations. |
dist_worker_max_cached_subs_per_tenant | 200_000L | Maximum cached subscriptions per tenant. |
dist_worker_topic_match_expiry_seconds | 5 | Expiry time in seconds for topic matches. |
inbox_check_queues_per_range | 1 | Number of check queues per range. |
inbox_deliverers | 100 | Number of inbox deliverers. |
inbox_fetch_queues_per_range | Max(1, CPU cores / 4) | Number of fetch queues per range. |
inbox_store_load_estimation_window_seconds | 5L | Time window in seconds for load estimation in inbox store. |
ingress_slowdown_direct_memory_usage | 0.95 | Threshold 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_usage | 0.9 | Threshold 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. |
mqtt_utf8_sanity_check | false | Enables/disables UTF8 sanity checks according to MQTT-1.5.3. |
max_mqtt3_client_id_length | 65535 | Maximum client ID length for MQTT 3 clients. |
max_mqtt5_client_id_length | 65535 | Maximum client ID length for MQTT 5 clients. |
max_slowdown_timeout_seconds | 5 | Maximum 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_deliverers_per_server | CPU cores | Number of MQTT deliverers per server. |
persistent_session_detach_timeout_second | 7200 | The timeout seconds to consider persistent session is probably detached from mqtt client. |
retain_store_load_estimation_window_seconds | 5L | Time window in seconds for load estimation in retain store. |
session_register_num | 1000 | Number of concurrent session registers. |