All Products
Search
Document Center

E-MapReduce:Configuration items of backend nodes

Last Updated:Mar 26, 2026

The backend node (BE) reads configuration from be.conf at startup. Starting from V0.14, a second file, be_custom.conf, stores configuration items applied dynamically and persisted across restarts. When the same key appears in both files, be_custom.conf takes precedence.

Both files default to the conf/ directory under the BE deployment path. To protect be_custom.conf from being overwritten during upgrades, set custom_config_dir to a separate directory.

View the current configuration

Open the following URL in a browser to see all active configuration items:

http://<be_host>:<be_webserver_port>/varz

Apply configuration items

Configuration items can be applied statically at startup or dynamically while the BE is running.

Apply a static configuration item

Add the item to be.conf, then restart the BE. Items not present in be.conf use their default values.

Example — set max_base_compaction_concurrency to 5:

  1. Add max_base_compaction_concurrency=5 to be.conf.

  2. Restart the BE.

Apply a dynamic configuration item

Apply a configuration item to a running BE without restarting:

curl -X POST "http://<be_ip>:<be_http_port>/api/update_config?<key>=<value>"

A successful response looks like:

{
    "status": "OK",
    "msg": ""
}

In V0.13 and earlier, dynamically applied items are lost when the BE restarts. In V0.14 and later, add &persist=true to write the item to be_custom.conf so it survives restarts:

curl -X POST "http://<be_ip>:<be_http_port>/api/update_config?<key>=<value>&persist=true"

Example — dynamically set streaming_load_max_mb to 1024 and persist it:

curl -X POST "http://<be_ip>:<be_http_port>/api/update_config?streaming_load_max_mb=1024&persist=true"
Warning

Setting an invalid value can cause unexpected behavior. Verify the value before running the command on a production node.

Configuration items

Parameters are grouped by functional area. Items marked Dynamic: Yes can be applied without restarting the BE using the dynamic configuration command above.

Compaction

alter_tablet_worker_count

Property Value
Default 3
Dynamic No

Number of threads for schema change operations.

generate_compaction_tasks_min_interval_ms

Property Value
Default 10
Unit Milliseconds
Dynamic No

Minimum interval between two consecutive compaction task generations.

enable_vectorized_compaction

Property Value
Default true
Type Boolean
Dynamic No

Whether to enable vectorized compaction.

base_compaction_interval_seconds_since_last_operation

Property Value
Default 86400 (24 hours)
Unit Seconds
Dynamic No

Elapsed time since the last base compaction. This is one of the conditions that trigger base compaction.

base_compaction_num_cumulative_deltas

Property Value
Default 5
Dynamic No

Maximum number of cumulative files before base compaction is triggered. This is one of the trigger conditions for base compaction.

base_compaction_write_mbytes_per_sec

Property Value
Default 5
Unit MB/s
Dynamic No

Maximum disk write speed for a single base compaction task.

base_cumulative_delta_ratio

Property Value
Default 0.3
Dynamic No

Ratio of cumulative file sizes to base file sizes. When the ratio reaches this threshold, base compaction is triggered. This is one of the trigger conditions for base compaction.

base_compaction_trace_threshold

Property Value
Default 10
Type int32
Unit Seconds
Dynamic No

Time threshold for logging base compaction trace information. When a base compaction task runs longer than this value, its trace is written to the log. Set to a higher value to reduce log volume in busy environments.

The trace log entry looks like:

W0610 11:26:33.804431 56452 storage_engine.cpp:552] Trace:
0610 11:23:03.727535 (+     0us) storage_engine.cpp:554] start to perform base compaction
0610 11:23:03.728961 (+  1426us) storage_engine.cpp:560] found best tablet 546859
0610 11:23:03.728963 (+     2us) base_compaction.cpp:40] got base compaction lock
0610 11:23:03.729029 (+    66us) base_compaction.cpp:44] rowsets picked
0610 11:24:51.784439 (+108055410us) compaction.cpp:46] got concurrency lock and start to do compaction
0610 11:24:51.784818 (+   379us) compaction.cpp:74] prepare finished
0610 11:26:33.359265 (+101574447us) compaction.cpp:87] merge rowsets finished
0610 11:26:33.484481 (+125216us) compaction.cpp:102] output rowset built
0610 11:26:33.484482 (+     1us) compaction.cpp:106] check correctness finished
0610 11:26:33.513197 (+ 28715us) compaction.cpp:110] modify rowsets finished
0610 11:26:33.513300 (+   103us) base_compaction.cpp:49] compaction finished
0610 11:26:33.513441 (+   141us) base_compaction.cpp:56] unused rowsets have been moved to GC queue
Metrics: {"filtered_rows":0,"input_row_num":3346807,"input_rowsets_count":42,"input_rowsets_data_size":1256413170,"input_segments_num":44,"merge_rowsets_latency_us":101574444,"merged_rows":0,"output_row_num":3346807,"output_rowset_data_size":1228439659,"output_segments_num":6}

disable_auto_compaction

Property Value
Default false
Type Boolean
Dynamic No

Whether to disable automatic compaction. Disable only in debugging or test environments where you want to trigger compaction manually.

disable_compaction_trace_log

Property Value
Default true
Type Boolean
Dynamic No

Whether to disable compaction trace logging. When set to true, the cumulative_compaction_trace_threshold and base_compaction_trace_threshold items have no effect.

check_auto_compaction_interval_seconds

Property Value
Default 5
Type int32
Unit Seconds
Dynamic No

Interval at which the BE checks whether automatic compaction is disabled. Takes effect only when disable_auto_compaction is true.

cumulative_compaction_budgeted_bytes

Property Value
Default 104857600 (100 MB)
Dynamic No

Maximum size of a Singleton file. This is one of the conditions that trigger base compaction.

cumulative_compaction_trace_threshold

Property Value
Default 2
Type int32
Unit Seconds
Dynamic No

Time threshold for logging cumulative compaction trace information. Has no effect when disable_compaction_trace_log is true.

cumulative_compaction_rounds_for_each_base_compaction_round

Property Value
Default 9
Type int32
Dynamic No

Number of cumulative compaction rounds run before each base compaction round.

cumulative_compaction_policy

Property Value
Default size_based
Type String
Dynamic No

Merge policy for cumulative compaction. Valid values:

  • ordinary — the initial policy. After cumulative compaction, the rowset immediately enters the base compaction stage.

  • size_based — an optimized policy. Rowsets are merged only when they are at the same order of magnitude in disk size. A rowset is promoted to base compaction only after it meets the promotion threshold. Reduces write amplification for large numbers of small-batch imports.

cumulative_size_based_promotion_size_mbytes

Property Value
Default 1024
Type int64
Unit MB
Dynamic No

When cumulative_compaction_policy is size_based, a cumulative compaction output rowset is promoted to base compaction when its total disk size exceeds this threshold. Keep this below 2048 MB to avoid version backlogs caused by long-running cumulative compaction.

cumulative_size_based_promotion_ratio

Property Value
Default 0.05
Type Double
Dynamic No

When cumulative_compaction_policy is size_based, a cumulative compaction output rowset is promoted to base compaction when its total disk size exceeds this fraction of the base rowset size. Values between 0.02 and 0.1 work well for most deployments.

cumulative_size_based_promotion_min_size_mbytes

Property Value
Default 64
Type int32
Unit MB
Dynamic No

When cumulative_compaction_policy is size_based, a cumulative compaction output rowset smaller than this threshold stays in the cumulative compaction stage and is not promoted to base compaction. Values above 512 MB may prevent base compaction from running.

cumulative_size_based_compaction_lower_size_mbytes

Property Value
Default 64
Type int64
Unit MB
Dynamic No

When cumulative_compaction_policy is size_based, rowsets larger than this threshold are split and merged using a level policy; smaller rowsets are merged directly. Values above 128 MB may cause excessive write amplification during cumulative compaction.

compaction_tablet_compaction_score_factor

Property Value
Default 1
Type int32
Dynamic No

Weight of the compaction score in the tablet scoring formula used to select a tablet for compaction:

tablet_score = compaction_tablet_scan_frequency_factor × tablet_scan_frequency
             + compaction_tablet_compaction_score_factor × compaction_score

compaction_tablet_scan_frequency_factor

Property Value
Default 0
Type int32
Dynamic No

Weight of scan frequency in the tablet scoring formula. Increase this value to prioritize compacting tablets that are scanned frequently.

compaction_task_num_per_disk

Property Value
Default 2
Type int32
Dynamic No

Number of compaction tasks run in parallel per hard disk drive (HDD).

compaction_task_num_per_fast_disk

Property Value
Default 4
Type int32
Dynamic No

Number of compaction tasks run in parallel per solid-state drive (SSD).

max_base_compaction_threads

Property Value
Default 4
Type int32
Dynamic No

Maximum number of threads in the base compaction thread pool.

max_cumu_compaction_threads

Property Value
Default 10
Type int32
Dynamic No

Maximum number of threads in the cumulative compaction thread pool.

min_compaction_threads

Property Value
Default 10
Type int32
Dynamic No

Minimum number of threads in the compaction thread pool.

min_compaction_failure_interval_sec

Property Value
Default 5
Type int32
Unit Seconds
Dynamic No

After a tablet fails to merge during cumulative compaction, the tablet must wait at least this long before it can be selected again.

total_permits_for_compaction_score

Property Value
Default 10000
Type int64
Dynamic Yes

Upper limit on the total permits held by all compaction tasks. Controls memory consumption for compaction. Increase this value to allow more concurrent compaction work; decrease it to reduce memory pressure.

row_step_for_compaction_merge_log

Property Value
Default 0
Type int64
Dynamic Yes

Number of merged rows between log entries during compaction. Set to 0 to suppress compaction merge logs.

enable_quick_compaction

Property Value
Default false
Type Boolean
Dynamic No

Whether to enable quick compaction. In workloads that import small batches frequently, quick compaction merges imported versions promptly to prevent the -235 error. "Small" is measured by row count, controlled by quick_compaction_max_rows.

quick_compaction_max_rows

Property Value
Default 1000
Type int32
Dynamic No

Maximum row count for an import to be considered small and eligible for quick compaction. Requires enable_quick_compaction to be true.

quick_compaction_batch_size

Property Value
Default 10
Type int32
Dynamic No

Number of small imports that trigger a quick compaction round.

quick_compaction_min_rowsets

Property Value
Default 10
Type int32
Dynamic No

Minimum number of rowsets that must be selected for quick compaction to actually run.

Query and scanning

doris_max_scan_key_num

Property Value
Default 1024
Type int
Dynamic No

Maximum number of scan key ranges a scan node can generate from query conditions. A higher value increases scanning parallelism but may raise scheduling overhead and slow queries in high-concurrency scenarios. An empirical starting point is 50. In high-concurrency deployments, reduce this value if increased parallelism doesn't help.

doris_scan_range_row_count

Property Value
Default 524288
Type int32
Dynamic No

Number of rows per ScanRange when the BE splits a scanning range into multiple ScanRanges. Controls how long a single OlapScanner holds an I/O thread.

doris_scanner_queue_size

Property Value
Default 1024
Type int32
Dynamic No

Length of the RowBatch buffer queue between TransferThread and OlapScanner. Doris scans data asynchronously: scanned RowBatches from OlapScanner wait in this queue until TransferThread picks them up.

doris_scanner_row_num

Property Value
Default 16384
Dynamic No

Maximum rows each scanning thread returns per execution.

doris_scanner_thread_pool_queue_size

Property Value
Default 102400
Type int32
Dynamic No

Queue length of the scanner thread pool. When submitted tasks exceed this length, new submissions block until a slot opens.

doris_scanner_thread_pool_thread_num

Property Value
Default 48
Type int32
Dynamic No

Number of threads in the scanner thread pool. Determines scanning parallelism. Increase to handle more concurrent scans; too high a value increases scheduling overhead.

doris_scan_range_max_mb

Property Value
Default 1024
Type int32
Unit MB
Dynamic No

Maximum amount of data read by each OlapScanner per scan.

doris_max_pushdown_conjuncts_return_rate

Property Value
Default 90
Type int32
Dynamic No

During a hash join, the BE pushes join conditions to OlapScanner using dynamic partition pruning. After 32768 rows are scanned, the BE checks the filter rate. If the filter rate falls below this threshold (as a percentage), the BE stops using the dynamic partition clipping condition for filtering.

max_pushdown_conditions_per_column

Property Value
Default 1024
Type int
Dynamic No

Maximum number of filter conditions that can be pushed down to the storage engine for a single column. Applies mainly to IN predicates (WHERE colA IN (v1, v2, v3, ...)). Increasing this value lets more IN predicate conditions reach the storage engine index, potentially reducing data scanned. However, too many conditions can increase random reads. This item can also be set at the session level.

fragment_pool_queue_size

Property Value
Default 2048
Dynamic No

Maximum number of concurrent query requests on a single node.

fragment_pool_thread_num_min

Property Value
Default 64
Dynamic No

Minimum number of threads in the fragment execution thread pool.

fragment_pool_thread_num_max

Property Value
Default 256
Dynamic No

Maximum number of threads in the fragment execution thread pool. The pool starts with fragment_pool_thread_num_min threads and grows dynamically up to this limit.

enable_partitioned_aggregation

Property Value
Default true
Type Boolean
Dynamic No

Whether the BE uses PartitionAggregateNode for aggregation. When false, AggregationNode is used instead. Keep the default unless directed otherwise.

enable_prefetch

Property Value
Default true
Type Boolean
Dynamic No

Whether to prefetch HashBuckets when using PartitionedHashTable for aggregation and join operations. Keep true for better performance.

enable_quadratic_probing

Property Value
Default true
Type Boolean
Dynamic No

Whether to use quadratic probing to resolve hash conflicts in PartitionedHashTable. When false, linear probing is used. For more information, see Quadratic probing.

result_buffer_cancelled_interval_time

Property Value
Default 300
Unit Seconds
Dynamic No

Interval at which result buffers are released after cancellation.

exchg_node_buffer_size_bytes

Property Value
Default 10485760 (10 MB)
Type int32
Unit Bytes
Dynamic No

Size of the buffer queue in ExchangeNode. When the sender sends more data than the buffer can hold, subsequent sends block until space is freed.

Memory management

mem_limit

Property Value
Default 80%
Type String
Dynamic No

Maximum percentage of server memory the BE can use. Prevents the BE from starving other processes on the machine. Values above 100% are capped at 100%.

buffer_pool_limit

Property Value
Default 20%
Type String
Dynamic No

Maximum proportion of allocatable memory in the buffer pool. The buffer pool manages memory for all concurrent queries using buffer pages and disk spilling. Currently applies to AggregationNode and ExchangeNode.

buffer_pool_clean_pages_limit

Property Value
Default 20
Dynamic No

Maximum number of clean pages the buffer pool retains.

chunk_reserved_bytes_limit

Property Value
Default 20%
Type int32
Unit Bytes
Dynamic No

Reserved bytes limit for the Chunk Allocator, expressed as a percentage of mem_limit. The value must be a positive multiple of 2. If the value exceeds physical memory, the physical memory size is used. Increasing this value improves performance but reduces memory available to other modules.

memory_limitation_per_thread_for_schema_change

Property Value
Default 2
Unit GB
Dynamic No

Maximum memory a single schema change task can use.

memory_maintenance_sleep_time_s

Property Value
Default 10
Unit Seconds
Dynamic No

Sleep interval between memory maintenance iterations.

memory_max_alignment

Property Value
Default 16
Dynamic No

Maximum memory alignment size.

disable_mem_pools

Property Value
Default false
Dynamic No

Whether to disable the memory cache pool.

madvise_huge_pages

Property Value
Default false
Dynamic No

Whether to use Linux huge pages for memory allocation.

mmap_buffers

Property Value
Default false
Dynamic No

Whether to use mmap for memory allocation.

use_mmap_allocate_chunk

Property Value
Default false
Dynamic No

Whether to use mmap to allocate chunks. When enabled, increase vm.max_map_count (default 65530) to avoid running out of memory maps. Run the following command as root:

sysctl -w vm.max_map_count=262144
# or
echo 262144 > /proc/sys/vm/max_map_count

Also set chunk_reserved_bytes_limit to a large value to maintain performance.

load_process_max_memory_limit_bytes

Property Value
Default 107374182400 (100 GB)
Dynamic No

Maximum memory all import threads on a single node can use. Set this to a large value to maintain load performance during Doris upgrades.

load_process_max_memory_limit_percent

Property Value
Default 80
Dynamic No

Maximum percentage of server memory all import threads on a single node can use. Set this to a large value to maintain load performance during Doris upgrades.

tc_free_memory_rate

Property Value
Default 20
Dynamic No

Proportion of available memory. Valid values: 0 to 100.

tc_max_total_thread_cache_bytes

Property Value
Default 1073741824 (1 GB)
Type int64
Dynamic No

Total thread cache size in TCMalloc. The limit is not strictly enforced; actual usage may exceed it. In high-stress scenarios where many threads compete for TCMalloc locks (visible as SpinLock-related stack frames), increase this value to reduce contention. For more information, see TCMalloc: Thread-Caching Malloc.

tc_use_memory_min

Property Value
Default 10737418240 (10 GB)
Dynamic No

Minimum memory TCMalloc retains. TCMalloc does not return memory to the OS if its total usage is below this threshold.

enable_tcmalloc_hook

Property Value
Default true
Type Boolean
Dynamic No

Whether to enable the TCMalloc hook used to track thread-local MemTracker statistics.

mem_tracker_consume_min_size_bytes

Property Value
Default 1048576 (1 MB)
Type int32
Unit Bytes
Dynamic No

Minimum size of a TCMalloc hook operation before MemTracker is updated. Smaller allocations are accumulated to avoid frequent MemTracker calls. Reducing this value increases MemTracker accuracy but raises call frequency. Increasing it reduces call frequency but introduces inaccuracy. The maximum theoretical error is mem_tracker_consume_min_size_bytes × number of BE threads.

max_free_io_buffers

Property Value
Default 128
Dynamic No

Maximum number of I/O buffers IoMgr reserves. Each buffer is between 1024 bytes and 8 MB; the total size of all reserved buffers can reach up to 2 GB.

read_size

Property Value
Default 8388608 (8 MB)
Dynamic No

Size of data read per I/O operation sent to the OS. At 8 MB, random and sequential I/O performance are similar, balancing latency against disk utilization.

min_buffer_size

Property Value
Default 1024
Unit Bytes
Dynamic No

Minimum read buffer size.

Storage

storage_root_path

Property Value
Default ${DORIS_HOME}
Type String
Dynamic No

Directories where the BE stores data. Separate multiple directories with semicolons (;). Optionally specify the storage medium and capacity limit for each directory.

Two syntax styles are supported:

Style 1 — suffix notation:

storage_root_path=/home/disk1/doris.HDD;/home/disk2/doris.SSD;/home/disk3/doris
  • .HDD — hard disk drive (HDD)

  • .SSD — solid-state drive (SSD)

  • No suffix — treated as HDD

Style 2 — key-value notation:

storage_root_path=/home/disk1/doris,medium:hdd;/home/disk2/doris,medium:ssd

If all disks are the same type, specify directories without any medium suffix and update the default storage medium setting in the frontend node (FE) configuration.

default_rowset_type

Property Value
Default BETA
Type String
Dynamic No

Default storage format for this BE. Valid values: ALPHA, BETA. This setting applies in two cases:

  • When the storage_format parameter of a table is set to Default.

  • When the BE performs compaction.

disable_storage_page_cache

Property Value
Default false
Type Boolean
Dynamic No

Whether to disable page cache for index caching. Takes effect only when default_rowset_type is BETA.

storage_page_cache_limit

Property Value
Default 20%
Dynamic No

Maximum size of the storage page cache.

storage_page_cache_shard_size

Property Value
Default 16
Dynamic No

Shard size of StoragePageCache. Valid values: 2^n (n = 0, 1, 2, ...). Set this close to the number of CPU cores on the BE to reduce lock contention in StoragePageCache.

index_page_cache_percentage

Property Value
Default 10
Type int32
Dynamic No

Percentage of total page cache allocated to index pages. Valid values: 0 to 100.

index_stream_cache_capacity

Property Value
Default 10737418240 (10 GB)
Dynamic No

Capacity of the cache for index statistics, including bloom filter, Min, and Max information.

storage_flood_stage_usage_percent

Property Value
Default 95
Dynamic No

Maximum percentage of disk space a data directory can use. When this threshold and storage_flood_stage_left_capacity_bytes are both reached, writes to the directory are rejected.

storage_flood_stage_left_capacity_bytes

Property Value
Default 1073741824 (1 GB)
Dynamic No

Minimum free space a data directory must have. Works together with storage_flood_stage_usage_percent to enforce disk write limits.

segment_cache_capacity

Property Value
Default 1000000
Type int32
Dynamic No

Maximum number of segments in Segment Cache. Increasing this value caches more segments and reduces I/O; decreasing it frees memory. Adjust based on actual access patterns.

remote_storage_read_buffer_mb

Property Value
Default 16
Type int32
Unit MB
Dynamic No

Cache size when reading files from Hadoop Distributed File System (HDFS) or Object Storage Service (OSS). Increasing this value reduces remote read calls but uses more memory.

sync_tablet_meta

Property Value
Default false
Dynamic No

Whether the storage engine calls sync to flush tablet metadata to disk after each write.

storage_strict_check_incompatible_old_format

Property Value
Default true
Type Boolean
Dynamic No (not supported)

Whether to use strict verification when reading data in a format from a previous version that is incompatible with the current version. When true, the BE exits with a fatal log entry if it encounters an incompatible format. When false, a warning is logged and the BE continues.

pending_data_expire_time_sec

Property Value
Default 1800 (30 minutes)
Unit Seconds
Dynamic No

Maximum time the storage engine retains unvalidated (pending) data.

write_buffer_size

Property Value
Default 104857600 (100 MB)
Dynamic No

Size of the in-memory write buffer before it is flushed to disk during data import. Too small a value generates many small files on the BE. Too large a value can cause RPC timeouts. If you increase this value, also increase tablet_writer_open_rpc_timeout_sec.

max_segment_num_per_rowset

Property Value
Default 200
Type int32
Dynamic No

Maximum number of segments in a newly generated rowset during data import. When exceeded, the import fails with a -238 error. Too many segments in a rowset can cause high memory usage during compaction and out-of-memory (OOM) errors.

string_type_length_soft_limit_bytes

Property Value
Default 1048576 (1 MB)
Type int32
Unit Bytes
Dynamic No

Soft maximum length for string data. This limit is not strictly enforced.

default_num_rows_per_column_file_block

Property Value
Default 1024
Type int32
Dynamic No

Number of rows per RowBlock.

zone_map_row_num_threshold

Property Value
Default 20
Type int32
Dynamic No

Pages with fewer rows than this threshold skip zone map creation, reducing data expansion.

column_dictionary_key_ratio_threshold

Property Value
Default 0
Dynamic No

String value ratio threshold for dictionary compression. When the ratio of distinct string values is below this threshold, dictionary compression is applied.

column_dictionary_key_size_threshold

Property Value
Default 0
Dynamic No

Column size threshold for dictionary compression. When the column size is below this threshold, dictionary compression is applied.

Tablet management

tablet_map_shard_size

Property Value
Default 1
Dynamic No

Shard size of the tablet map lock. Valid values: 2^n (n = 0, 1, 2, 3, 4). Increase to reduce lock contention when managing many tablets.

tablet_meta_checkpoint_min_interval_secs

Property Value
Default 600
Unit Seconds
Dynamic No

Polling interval for TabletMeta Checkpoint threads.

tablet_meta_checkpoint_min_new_rowsets_num

Property Value
Default 10
Dynamic No

Minimum number of new rowsets required to trigger a TabletMeta Checkpoint.

tablet_scan_frequency_time_node_interval_second

Property Value
Default 300
Type int64
Unit Seconds
Dynamic No

Interval at which query_scan_count is sampled to calculate tablet scan frequency. Used together with compaction_tablet_scan_frequency_factor.

tablet_stat_cache_update_interval_second

Property Value
Default 300
Unit Seconds
Dynamic No

Interval at which tablet status caches are refreshed.

tablet_rowset_stale_sweep_time_sec

Property Value
Default 1800 (30 minutes)
Type int64
Unit Seconds
Dynamic No

Expiration time for merged rowset versions. When the time since the last rowset was created in a merged version directory exceeds this value, the directory is cleaned up and the merged rowsets are deleted. Reduce this value when disk space is tight. If set below 5 minutes (300 seconds), frontend queries against merged versions may fail with a -230 error.

max_tablet_version_num

Property Value
Default 500
Type int
Dynamic No

Maximum number of versions per tablet. Prevents version accumulation caused by frequent imports or delayed compaction. Import tasks are rejected when this limit is reached.

max_tablet_num_per_shard

Property Value
Default 1024
Dynamic No

Maximum number of tablets per shard directory. Controls the tablet directory layout to prevent any single directory from containing too many subdirectories.

check_consistency_worker_count

Property Value
Default 1
Dynamic No

Number of worker threads for calculating tablet checksums.

create_tablet_worker_count

Property Value
Default 3
Dynamic No

Number of worker threads for creating tablets.

drop_tablet_worker_count

Property Value
Default 3
Dynamic No

Number of threads for deleting tablets.

number_tablet_writer_threads

Property Value
Default 16
Dynamic No

Number of threads for writing to tablets.

tablet_writer_open_rpc_timeout_sec

Property Value
Default 60
Unit Seconds
Dynamic No

RPC timeout for opening a tablet writer on a remote BE. This timeout also applies when sending a batch (1024 rows) during fast imports. If you see send batch fail timeout errors, increase this value. When you increase write_buffer_size, also increase this timeout accordingly.

tablet_writer_ignore_eovercrowded

Property Value
Default false
Type Boolean
Dynamic No

Whether to ignore the [E1011]The server is overcrowded bRPC error during data writes. Use this as a temporary workaround when you cannot immediately adjust brpc_socket_max_unwritten_bytes (which requires a restart). This setting only suppresses the error during writes; other RPC requests still enforce the overcrowded check.

ignore_broken_disk

Property Value
Default false
Dynamic No

Behavior when a directory specified by storage_root_path is missing or inaccessible at startup:

  • true — the directory is skipped. If other directories are available, the BE starts normally.

  • false — the BE stops.

ignore_load_tablet_failure

Property Value
Default false
Type Boolean
Dynamic No

Whether to ignore tablet header metadata load failures at startup. By default, if any tablet fails to load in a storage directory, the BE stops and logs:

load tablets from header failed, failed tablets size: xxx, path=xxx

To resolve the failure without restarting, either:

  • Use meta_tool to delete the tablets whose metadata cannot be loaded (when other replicas are healthy).

  • Set this item to true to skip the failed tablets and start the BE.

ignore_rowset_stale_unconsistent_delete

Property Value
Default false
Type Boolean
Dynamic No

Whether to delete outdated merged rowsets that cannot form a consistent version path. Outdated rowsets are normally deleted after 30 minutes. When false, the BE exits after reporting the inconsistency. When true, the BE logs the error and continues. Ignoring this error typically does not affect queries, but may cause a -230 error when the merged version is published from the frontend node.

inc_rowset_expired_sec

Property Value
Default 1800 (30 minutes)
Unit Seconds
Dynamic No

Duration for which activated incremental rowsets are retained in the storage engine during incremental cloning.

path_gc_check

Property Value
Default true
Dynamic No

Whether to enable recycling scan data thread checks.

path_gc_check_interval_second

Property Value
Default 86400 (24 hours)
Unit Seconds
Dynamic No

Interval between recycling scan data thread checks.

path_gc_check_step

Property Value
Default 1000
Dynamic No

Step size per garbage collection check iteration.

path_gc_check_step_interval_ms

Property Value
Default 10
Unit Milliseconds
Dynamic No

Interval between steps within a single garbage collection check.

path_scan_interval_second

Property Value
Default 86400 (24 hours)
Unit Seconds
Dynamic No

Interval between path scans performed before garbage collection checks.

max_garbage_sweep_interval

Property Value
Default 3600 (1 hour)
Unit Seconds
Dynamic No

Maximum interval between disk garbage collection sweeps.

min_garbage_sweep_interval

Property Value
Default 180
Unit Seconds
Dynamic No

Minimum interval between disk garbage collection sweeps.

unused_rowset_monitor_interval

Property Value
Default 30
Unit Seconds
Dynamic No

Interval at which expired rowsets are scanned and cleaned.

trash_file_expire_time_sec

Property Value
Default 259200 (3 days)
Unit Seconds
Dynamic No

Interval at which the recycle bin is cleaned. This limit may not be enforced when disk space is critically low.

snapshot_expire_time_sec

Property Value
Default 172800 (48 hours)
Unit Seconds
Dynamic No

Interval at which snapshots are cleaned.

Data import

push_write_mbytes_per_sec

Property Value
Default 10
Type int32
Unit MB/s
Dynamic No

Maximum import speed. Applies to all import methods.

streaming_load_max_mb

Property Value
Default 10240 (10 GB)
Type int64
Unit MB
Dynamic Yes

Maximum size of CSV data in a single Stream Load. Stream Load is suited for a few GB of data and is not designed for very large datasets.

streaming_load_json_max_mb

Property Value
Default 100
Type int64
Unit MB
Dynamic Yes

Maximum size of JSON data in a single Stream Load. JSON data cannot be split, so all data must fit in memory before parsing.

streaming_load_rpc_max_alive_time_sec

Property Value
Default 1200 (20 minutes)
Unit Seconds
Dynamic No

Lifetime of a TabletsChannel. Channels that receive no data within this period are deleted.

max_send_batch_parallelism_per_job

Property Value
Default 5
Type int
Dynamic No

Maximum parallelism for sending data from OlapTableSink during batch processing. If send_batch_parallelism is set higher, it is overridden by this value.

send_batch_thread_pool_thread_num

Property Value
Default 256
Type int32
Dynamic No

Number of threads in the SendBatch thread pool.

send_batch_thread_pool_queue_size

Property Value
Default 102400
Type int32
Dynamic No

Queue length of the SendBatch thread pool. New submissions block when the queue is full.

high_priority_flush_thread_num_per_store

Property Value
Default 1
Type int32
Dynamic No

Number of flush threads reserved for HIGH priority import tasks in each storage directory.

load_task_high_priority_threshold_second

Property Value
Default 120
Type int32
Unit Seconds
Dynamic No

Import tasks with a timeout shorter than this value are classified as HIGH priority and use a separate flush thread pool.

flush_thread_num_per_store

Property Value
Default 2
Dynamic No

Number of threads per store for flushing in-memory tables to disk.

load_data_reserve_hours

Property Value
Default 4
Unit Hours
Dynamic No

Retention period for mini load data files. Files are deleted after this duration.

load_error_log_reserve_hours

Property Value
Default 48
Unit Hours
Dynamic No

Retention period for load error logs.

min_load_rpc_timeout_ms

Property Value
Default 20
Type int32
Unit Milliseconds
Dynamic No

Minimum RPC timeout for each RPC call within a load job.

compress_rowbatches

Property Value
Default true
Type Boolean
Dynamic No

Whether to compress RowBatches using Snappy compression during serialization.

serialize_batch

Property Value
Default false
Dynamic No

Whether to serialize RowBatches for RPCs between backend nodes.

row_nums_check

Property Value
Default true
Dynamic No

Whether to validate row counts for BE operations, CE node operations, and schema changes.

etl_thread_pool_queue_size

Property Value
Default 256
Dynamic No

Queue size of the extract, transform, and load (ETL) thread pool.

push_worker_count_high_priority

Property Value
Default 3
Dynamic No

Number of import threads for HIGH priority tasks.

push_worker_count_normal_priority

Property Value
Default 3
Dynamic No

Number of import threads for NORMAL priority tasks.

publish_version_worker_count

Property Value
Default 8
Dynamic No

Number of threads for publishing new versions.

clear_transaction_task_worker_count

Property Value
Default 1
Dynamic No

Number of threads for cleaning up transactions.

delete_worker_count

Property Value
Default 3
Dynamic No

Number of threads for data deletion tasks.

max_runnings_transactions_per_txn_map

Property Value
Default 100
Dynamic No

Maximum number of concurrent transactions per txn_partition_map in the transaction manager. Prevents the transaction manager from accumulating too many transactions.

Routine Load

routine_load_thread_pool_size

Property Value
Default 10
Dynamic No

Thread pool size for Routine Load tasks. Must be greater than max_concurrent_task_num_per_be (default: 5).

routine_load_consumer_pool_size

Property Value
Default 10
Type int32
Dynamic No

Number of cached data consumers for Routine Load.

max_consumer_num_per_group

Property Value
Default 3
Dynamic No

Maximum number of consumers per data consumer group, used for Routine Load.

kafka_api_version_request

Property Value
Default true
Dynamic No

Set to false when the Kafka version is lower than 0.10.0.0.

kafka_broker_version_fallback

Property Value
Default 0.10.0
Dynamic No

Fallback Kafka broker version when kafka_api_version_request is false. Valid values: 0.9.0.x, 0.8.x.y.

Network and RPC

be_port

Property Value
Default 9060
Type int32
Dynamic No

Port of the Thrift server on the BE. Receives requests from the frontend node.

be_service_threads

Property Value
Default 64
Type int32
Dynamic No

Number of execution threads in the Thrift server on the BE. Determines how many frontend requests can be processed concurrently.

heartbeat_service_port

Property Value
Default 9050
Type int32
Dynamic No

Thrift heartbeat service port on the BE. Receives heartbeats from the frontend node.

heartbeat_service_thread_count

Property Value
Default 1
Type int32
Dynamic No

Number of threads running the heartbeat service on the BE. Keep the default value.

webserver_port

Property Value
Default 8040
Type int32
Dynamic No

HTTP server port on the BE. Used for the web UI and /varz endpoint.

webserver_num_workers

Property Value
Default 48
Dynamic No

Number of worker threads in the web server.

brpc_port

Property Value
Default 8060
Type int32
Dynamic No

bRPC port for communication between backend nodes.

brpc_num_threads

Property Value
Default -1 (equals number of CPU cores)
Dynamic No

Number of bRPC worker threads. Increase this value for higher queries per second (QPS). For guidance, see incubator-brpc benchmark.

brpc_max_body_size

Property Value
Default (bRPC default)
Dynamic No

Maximum body size for bRPC messages, mapped to the max_body_size bRPC parameter. If queries fail with body_size is too large in the BE log — typically with queries that use multi distinct, no GROUP BY, and over 1 TB of data — increase this value.

brpc_socket_max_unwritten_bytes

Property Value
Default (bRPC default)
Dynamic No

Maximum unwritten bytes per bRPC socket, mapped to the socket_max_unwritten_bytes bRPC parameter. If queries fail with The server is overcrowded — typically when sending large bitmap values — increase this value. Note: this item cannot be changed dynamically; use tablet_writer_ignore_eovercrowded as a temporary workaround.

transfer_large_data_by_brpc

Property Value
Default true
Type Boolean
Dynamic No

When Tuple/Block data exceeds 1.8 GB, whether to serialize the protobuf request and send the data as an HTTP bRPC attachment. When the protobuf request exceeds 2 GB, the error Bad request, error_text=[E1003]Fail to compress request occurs. This setting prevents that error by routing large payloads through HTTP bRPC.

auto_refresh_brpc_channel

Property Value
Default false
Type Boolean
Dynamic No

Whether to verify bRPC connection availability via a handshake RPC when obtaining a connection. If the connection is unavailable, a new one is established.

thrift_client_retry_interval_ms

Property Value
Default 1000
Type int64
Unit Milliseconds
Dynamic No

Retry interval for the BE Thrift client when the frontend node's Thrift server is overwhelmed (avalanche scenario).

thrift_connect_timeout_seconds

Property Value
Default 3
Unit Seconds
Dynamic No

Default connection timeout for the Thrift client.

thrift_rpc_timeout_ms

Property Value
Default 5000
Unit Milliseconds
Dynamic No

Default Thrift RPC timeout.

thrift_server_type_of_fe

Property Value
Default (matches FE setting)
Type String
Dynamic No

Thrift service model used by the frontend node. Must match the thrift_server_type configuration on the frontend node (case-insensitive). Valid values:

  • THREADED — non-blocking I/O model.

  • THREAD_POOL — blocking I/O model.

txn_commit_rpc_timeout_ms

Property Value
Default 10000 (10 seconds)
Unit Milliseconds
Dynamic No

RPC timeout for transaction commit.

txn_map_shard_size

Property Value
Default 128
Dynamic No

Shard size of txn_map_lock. Valid values: 2^n (n = 0, 1, 2, 3, 4). Increase to improve transaction management throughput.

txn_shard_size

Property Value
Default 1024
Dynamic No

Shard size of txn_lock. Valid values: 2^n (n = 0, 1, 2, 3, 4). Increase to improve transaction management throughput.

port

Property Value
Default 20001
Type int32
Dynamic No

Port used for BE self-test.

Thread and CPU configuration

num_cores

Property Value
Default 0 (auto-detect)
Type int32
Dynamic No

Number of CPU cores the BE can use. 0 reads the count from /proc/cpuinfo.

num_disks

Property Value
Default 0 (system setting)
Dynamic No

Number of disks on the machine. 0 applies the OS default.

num_threads_per_core

Property Value
Default 3
Dynamic No

Number of threads per CPU core. Values two to three times the core count keep cores busy without excessive scheduling jitter.

num_threads_per_disk

Property Value
Default 0
Dynamic No

Maximum number of threads per disk, which also determines the maximum queue depth per disk.

sleep_one_second

Property Value
Default 1 (1 second)
Type int32
Unit Seconds
Dynamic No

Global sleep interval for BE threads. This is a global variable and cannot be modified at runtime.

priority_networks

Property Value
Default (none)
Dynamic No

CIDR blocks used to select the correct IP address on multi-homed servers. Separate multiple blocks with semicolons (;). At most one IP address should match. If no address matches the specified blocks, one is chosen at random.

priority_queue_remaining_tasks_increased_frequency

Property Value
Default 512
Dynamic No

Frequency at which task priority is adjusted in BlockingPriorityQueue.

Snapshots and cloning

make_snapshot_worker_count

Property Value
Default 5
Dynamic No

Number of threads for creating snapshots.

release_snapshot_worker_count

Property Value
Default 5
Dynamic No

Number of threads for releasing snapshots.

clone_worker_count

Property Value
Default 3
Type int32
Dynamic No

Number of threads for cloning tasks.

storage_medium_migrate_count

Property Value
Default 1
Dynamic No

Number of threads for storage medium migration (cloning between HDD and SSD).

download_worker_count

Property Value
Default 1
Dynamic No

Number of download threads.

upload_worker_count

Property Value
Default 1
Dynamic No

Maximum number of upload threads.

download_low_speed_limit_kbps

Property Value
Default 50
Unit KB/s
Dynamic No

Minimum acceptable download speed. Downloads that fall below this speed for longer than download_low_speed_time are aborted.

download_low_speed_time

Property Value
Default 300
Unit Seconds
Dynamic No

Maximum duration a download can stay below download_low_speed_limit_kbps before being aborted.

max_download_speed_kbps

Property Value
Default 50000
Unit KB/s
Dynamic No

Maximum download speed.

Logging

sys_log_dir

Property Value
Default ${DORIS_HOME}/log
Type String
Dynamic No

Directory where BE log files are stored.

sys_log_level

Property Value
Default INFO
Dynamic No

Log level. From lowest to highest severity: INFO, WARNING, ERROR, FATAL.

sys_log_roll_mode

Property Value
Default SIZE-MB-1024
Dynamic No

Log rotation policy. The default rotates when a log file reaches 1 GB.

sys_log_roll_num

Property Value
Default 10
Dynamic No

Number of rotated log files to retain.

sys_log_verbose_level

Property Value
Default 10
Dynamic No

Verbosity level for VLOG output in the code.

sys_log_verbose_modules

Property Value
Default (none)
Dynamic No

Module filter for log output. For example, setting this to olap prints only logs from the olap module.

log_buffer_level

Property Value
Default (keep in memory)
Dynamic No

Log flushing strategy. The default keeps logs in memory.

aws_log_level

Property Value
Default 3 (Warn)
Type int32
Dynamic No

Log level for the AWS SDK. Valid values:

Value Level
0 Off
1 Fatal
2 Error
3 Warn
4 Info
5 Debug
6 Trace

Metrics and monitoring

enable_metric_calculator

Property Value
Default true
Dynamic No

Whether to run the metric calculator to collect BE performance indicators.

enable_system_metrics

Property Value
Default true
Dynamic No

Whether to collect system metrics.

periodic_counter_update_period_ms

Property Value
Default 500
Unit Milliseconds
Dynamic No

Update interval for rate and sampling calculators.

status_report_interval

Property Value
Default 5
Unit Seconds
Dynamic No

Interval at which profile reports are sent.

report_disk_state_interval_seconds

Property Value
Default 60
Unit Seconds
Dynamic No

Interval at which the BE agent reports disk status to the frontend node.

report_tablet_interval_seconds

Property Value
Default 60
Unit Seconds
Dynamic No

Interval at which the BE agent reports OLAP tablet information to the frontend node.

report_task_interval_seconds

Property Value
Default 10
Unit Seconds
Dynamic No

Interval at which the BE agent reports task signatures to the frontend node.

disk_stat_monitor_interval

Property Value
Default 5
Unit Seconds
Dynamic No

Interval between consecutive disk status checks.

max_percentage_of_error_disk

Property Value
Default 0
Type int32
Dynamic No

Maximum percentage of damaged disks the storage engine tolerates. When the percentage of failed disks exceeds this value, the BE stops.

scan_context_gc_interval_min

Property Value
Default 5
Unit Minutes
Dynamic No

Scheduling interval for the context garbage collection thread.

External services

es_http_timeout_ms

Property Value
Default 5000
Unit Milliseconds
Dynamic No

Timeout for HTTP connections to Elasticsearch.

es_scroll_keepalive

Property Value
Default 5
Unit Minutes
Dynamic No

Duration for which an Elasticsearch scroll context is kept alive.

external_table_connect_timeout_sec

Property Value
Default 5
Type int32
Unit Seconds
Dynamic No

Connection timeout for external table connections.

Paths and directories

custom_config_dir

Property Value
Default conf/
Dynamic No

Directory for be_custom.conf. If the conf/ directory might be overwritten during upgrades, point this to a separate location to protect persisted dynamic configuration.

plugin_path

Property Value
Default ${DORIS_HOME}/plugin
Dynamic No

Directory for BE plugins.

pprof_profile_dir

Property Value
Default ${DORIS_HOME}/log
Dynamic No

Directory where pprof profiles are saved.

small_file_dir

Property Value
Default ${DORIS_HOME}/lib/small_file/
Dynamic No

Directory where SmallFileMgr stores downloaded files.

query_scratch_dirs

Property Value
Default ${DORIS_HOME}
Type String
Dynamic No

Directories where the BE writes temporary spill data during query execution. Separate multiple directories with semicolons (;).

pull_load_task_dir

Property Value
Default ${DORIS_HOME}/var/pull_load
Dynamic No

Directory for pull load task files.

user_function_dir

Property Value
Default ${DORIS_HOME}/lib/udf
Dynamic No

Directory for user-defined function (UDF) files.

Cluster management

cluster_id

Property Value
Default -1
Type int32
Dynamic No

ID of the cluster this BE belongs to. This value is normally delivered by the frontend node via heartbeat and does not need to be set manually. If you set it manually, make sure the cluster_id file in the data directory matches.

enable_stream_load_record

Property Value
Default false
Dynamic No

Whether to record Stream Load history.

enable_token_check

Property Value
Default true
Dynamic No

Used for forward compatibility. This item will be removed in a future version.

doris_cgroups

Property Value
Default (none)
Dynamic No

cgroups assigned to the Doris process.

max_client_cache_size_per_host

Property Value
Default 10
Dynamic No

Maximum number of client connections cached per remote host.

file_descriptor_cache_capacity

Property Value
Default 32768
Dynamic No

Number of file handles the BE caches.

cache_clean_interval

Property Value
Default 1800 (30 minutes)
Unit Seconds
Dynamic No

Interval at which unused file handle caches and Segment Cache entries are cleaned.

min_file_descriptor_number

Property Value
Default 60000
Dynamic No

Minimum number of file descriptors the BE requires.

min_cumulative_compaction_num_singleton_deltas

Property Value
Default 5
Dynamic No

Minimum number of incremental files required to trigger cumulative compaction.

max_cumulative_compaction_num_singleton_deltas

Property Value
Default 1000
Dynamic No

Maximum number of incremental files processed in a single cumulative compaction run.

max_memory_sink_batch_count

Property Value
Default 20
Dynamic No

Maximum number of batches for external scan caches. Works with batch_size (default 1024 rows): the default settings cache up to 20 × 1024 = 20,480 rows of external scan data.