BE 配置项

该文档主要介绍 BE 的相关配置项。

BE 的配置文件 be.conf 通常存放在 BE 部署路径的 conf/ 目录下。 而在 0.14 版本中会引入另一个配置文件 be_custom.conf。该配置文件用于记录用户在运行时动态配置并持久化的配置项。

BE 进程启动后,会先读取 be.conf 中的配置项,之后再读取 be_custom.conf 中的配置项。be_custom.conf 中的配置项会覆盖 be.conf 中相同的配置项。

查看配置项

用户可以通过访问 BE 的 Web 页面查看当前配置项:

http://be_host:be_webserver_port/varz

设置配置项

BE 的配置项有两种方式进行配置:

静态配置

在 conf/be.conf 文件中添加和设置配置项。be.conf 中的配置项会在 BE 进行启动时被读取。没有在 be.conf 中的配置项将使用默认值。

动态配置

BE 启动后,可以通过以下命令动态设置配置项。

curl -X POST http://{be_ip}:{be_http_port}/api/update_config?{key}={value}'

在 0.13 版本及之前,通过该方式修改的配置项将在 BE 进程重启后失效。在 0.14 及之后版本中,可以通过以下命令持久化修改后的配置。修改后的配置项存储在 be_custom.conf 文件中。

curl -X POST http://{be_ip}:{be_http_port}/api/update_config?{key}={value}&persist=true'

应用举例

静态方式修改 max_compaction_concurrency

通过在 be.conf 文件中添加:

max_compaction_concurrency=5

之后重启 BE 进程以生效该配置。

动态方式修改 streaming_load_max_mb

BE 启动后,通过下面命令动态设置配置项 streaming_load_max_mb:

curl -X POST http://{be_ip}:{be_http_port}/api/update_config?streaming_load_max_mb=1024

返回值如下,则说明设置成功。

{
“status”: “OK”,
“msg”: “”
}
BE 重启后该配置将失效。如果想持久化修改结果,使用如下命令:

curl -X POST http://{be_ip}:{be_http_port}/api/update_config?streaming_load_max_mb=1024&persist=true
#配置项列表

alter_tablet_worker_count

默认值:3

进行schema change的线程数

base_compaction_check_interval_seconds

默认值:60 (s)

BaseCompaction线程轮询的间隔

base_compaction_interval_seconds_since_last_operation

默认值:86400

BaseCompaction触发条件之一:上一次BaseCompaction距今的间隔

base_compaction_num_cumulative_deltas

默认值:5

BaseCompaction触发条件之一:Cumulative文件数目要达到的限制,达到这个限制之后会触发BaseCompaction

base_compaction_num_threads_per_disk

默认值:1

每个磁盘执行BaseCompaction任务的线程数目

base_compaction_write_mbytes_per_sec

默认值:5(MB)

BaseCompaction任务每秒写磁盘最大速度

base_cumulative_delta_ratio

默认值:0.3 (30%)

BaseCompaction触发条件之一:Cumulative文件大小达到Base文件的比例

base_compaction_trace_threshold

类型:int32
描述:打印base compaction的trace信息的阈值,单位秒
默认值:10
base compaction是一个耗时较长的后台操作,为了跟踪其运行信息,可以调整这个阈值参数来控制trace日志的打印。

be_port

类型:int32
描述:BE 上 thrift server 的端口号,用于接收来自 FE 的请求
默认值:9060

be_service_threads

类型:int32
描述:BE 上 thrift server service的执行线程数,代表可以用于执行FE请求的线程数。
默认值:64

brpc_max_body_size

这个配置主要用来修改 brpc 的参数 max_body_size。

有时查询失败,在 BE 日志中会出现 body_size is too large 的错误信息。这可能发生在 SQL 模式为 multi distinct + 无 group by + 超过1T 数据量的情况下。这个错误表示 brpc 的包大小超过了配置值。此时可以通过调大该配置避免这个错误。

brpc_socket_max_unwritten_bytes

这个配置主要用来修改 brpc 的参数 socket_max_unwritten_bytes。

有时查询失败,BE 日志中会出现 The server is overcrowded 的错误信息,表示连接上有过多的未发送数据。当查询需要发送较大的bitmap字段时,可能会遇到该问题,此时可能通过调大该配置避免该错误。

transfer_data_by_brpc_attachment

类型: bool
描述:该配置用来控制是否将ProtoBuf Request中的RowBatch转移到Controller Attachment后通过brpc发送。ProtoBuf Request的长度超过2G时会报错: Bad request, error_text=[E1003]Fail to compress request,将RowBatch放到Controller Attachment中将更快且避免这个错误。
默认值:false

brpc_num_threads

该配置主要用来修改brpc中bthreads的数量. 该配置的默认值被设置为-1, 这意味着bthreads的数量将被设置为机器的cpu核数。

用户可以将该配置的值调大来获取更好的QPS性能。更多的信息可以参考https://github.com/apache/incubator-brpc/blob/master/docs/cn/benchmark.md。

brpc_port

类型:int32
描述:BE 上的 brpc 的端口,用于 BE 之间通讯
默认值:8060

buffer_pool_clean_pages_limit

默认值:20G

清理可能被缓冲池保存的Page

buffer_pool_limit

类型:string
描述:buffer pool之中最大的可分配内存
默认值:80G
BE缓存池最大的内存可用量,buffer pool是BE新的内存管理结构,通过buffer page来进行内存管理,并能够实现数据的落盘。并发的所有查询的内存申请都会通过buffer pool来申请。当前buffer pool仅作用在AggregationNode与ExchangeNode。

check_auto_compaction_interval_seconds

类型:int32
描述:当自动执行compaction的功能关闭时,检查自动compaction开关是否被开启的时间间隔。
默认值:5

check_consistency_worker_count

默认值:1

计算tablet的校验和(checksum)的工作线程数

chunk_reserved_bytes_limit

默认值:2147483648

Chunk Allocator的reserved bytes限制,默认为2GB,增加这个变量可以提高性能,但是会获得更多其他模块无法使用的空闲内存

clear_transaction_task_worker_count

默认值:1

用于清理事务的线程数

clone_worker_count

默认值:3

用于执行克隆任务的线程数

cluster_id

类型:int32

描述:配置BE的所属于的集群id。

默认值:-1

该值通常由FE通过心跳向BE下发,不需要额外进行配置。当确认某BE属于某一个确定的Drois集群时,可以进行配置,同时需要修改数据目录下的cluster_id文件,使二者相同。

column_dictionary_key_ratio_threshold

默认值:0

字符串类型的取值比例,小于这个比例采用字典压缩算法

column_dictionary_key_size_threshold

默认值:0

字典压缩列大小,小于这个值采用字典压缩算法

compaction_tablet_compaction_score_factor

类型:int32
描述:选择tablet进行compaction时,计算 tablet score 的公式中 compaction score的权重。
默认值:1

compaction_tablet_scan_frequency_factor

类型:int32
描述:选择tablet进行compaction时,计算 tablet score 的公式中 tablet scan frequency 的权重。
默认值:0
选择一个tablet执行compaction任务时,可以将tablet的scan频率作为一个选择依据,对当前最近一段时间频繁scan的tablet优先执行compaction。 tablet score可以通过以下公式计算:

tablet_score = compaction_tablet_scan_frequency_factor * tablet_scan_frequency + compaction_tablet_compaction_score_factor * compaction_score

compaction_task_num_per_disk

类型:int32
描述:每个磁盘可以并发执行的compaction任务数量。
默认值:2

compress_rowbatches

类型:bool

描述:序列化RowBatch时是否使用Snappy压缩算法进行数据压缩

默认值:true

create_tablet_worker_count

默认值:3

BE创建tablet的工作线程数

cumulative_compaction_rounds_for_each_base_compaction_round

类型:int32
描述:Compaction任务的生产者每次连续生产多少轮cumulative compaction任务后生产一轮base compaction。
默认值:9

disable_auto_compaction

类型:bool
描述:关闭自动执行compaction任务
默认值:false
一般需要为关闭状态,当调试或测试环境中想要手动操作compaction任务时,可以对该配置进行开启

cumulative_compaction_budgeted_bytes

默认值:104857600

BaseCompaction触发条件之一:Singleton文件大小限制,100MB

cumulative_compaction_check_interval_seconds

默认值:10 (s)

CumulativeCompaction线程轮询的间隔

cumulative_compaction_num_threads_per_disk

默认值:1

每个磁盘执行CumulativeCompaction线程数

cumulative_compaction_skip_window_seconds

默认值:30 (s)

CumulativeCompaction会跳过最近发布的增量,以防止压缩可能被查询的版本(以防查询计划阶段花费一些时间)。改参数是设置跳过的窗口时间大小

cumulative_compaction_trace_threshold

类型:int32
描述:打印cumulative compaction的trace信息的阈值,单位秒
默认值:2
与base_compaction_trace_threshold类似。

disable_compaction_trace_log

类型: bool
描述: 关闭compaction的trace日志
默认值: true
如果设置为true,cumulative_compaction_trace_threshold 和 base_compaction_trace_threshold 将不起作用。并且trace日志将关闭。

cumulative_compaction_policy

类型:string
描述:配置 cumulative compaction 阶段的合并策略,目前实现了两种合并策略,num_based和size_based
默认值:size_based
详细说明,ordinary,是最初版本的cumulative compaction合并策略,做一次cumulative compaction之后直接base compaction流程。size_based,通用策略是ordinary策略的优化版本,仅当rowset的磁盘体积在相同数量级时才进行版本合并。合并之后满足条件的rowset进行晋升到base compaction阶段。能够做到在大量小批量导入的情况下:降低base compact的写入放大率,并在读取放大率和空间放大率之间进行权衡,同时减少了文件版本的数据。

cumulative_size_based_promotion_size_mbytes

类型:int64
描述:在size_based策略下,cumulative compaction的输出rowset总磁盘大小超过了此配置大小,该rowset将用于base compaction。单位是m字节。
默认值:1024
一般情况下,配置在2G以内,为了防止cumulative compaction时间过长,导致版本积压。

cumulative_size_based_promotion_ratio

类型:double
描述:在size_based策略下,cumulative compaction的输出rowset总磁盘大小超过base版本rowset的配置比例时,该rowset将用于base compaction。
默认值:0.05
一般情况下,建议配置不要高于0.1,低于0.02。

cumulative_size_based_promotion_min_size_mbytes

类型:int64
描述:在size_based策略下,cumulative compaction的输出rowset总磁盘大小低于此配置大小,该rowset将不进行base compaction,仍然处于cumulative compaction流程中。单位是m字节。
默认值:64
一般情况下,配置在512m以内,配置过大会导致base版本早期的大小过小,一直不进行base compaction。

cumulative_size_based_compaction_lower_size_mbytes

类型:int64
描述:在size_based策略下,cumulative compaction进行合并时,选出的要进行合并的rowset的总磁盘大小大于此配置时,才按级别策略划分合并。小于这个配置时,直接执行合并。单位是m字节。
默认值:64
一般情况下,配置在128m以内,配置过大会导致cumulative compaction写放大较多。

custom_config_dir

配置 be_custom.conf 文件的位置。默认为 conf/ 目录下。

在某些部署环境下,conf/ 目录可能因为系统的版本升级被覆盖掉。这会导致用户在运行是持久化修改的配置项也被覆盖。这时,我们可以将 be_custom.conf 存储在另一个指定的目录中,以防止配置文件被覆盖。

default_num_rows_per_column_file_block

类型:int32
描述:配置单个RowBlock之中包含多少行的数据。
默认值:1024

default_rowset_type

类型:string
描述:标识BE默认选择的存储格式,可配置的参数为:“ALPHA”, “BETA”。主要起以下两个作用
当建表的storage_format设置为Default时,通过该配置来选取BE的存储格式。
进行Compaction时选择BE的存储格式
默认值:BETA

delete_worker_count

默认值:3

执行数据删除任务的线程数

disable_mem_pools

默认值:false

是否禁用内存缓存池,默认不禁用

disable_storage_page_cache

类型:bool
描述:是否进行使用page cache进行index的缓存,该配置仅在BETA存储格式时生效
默认值:false

disk_stat_monitor_interval

默认值:5 (s)

磁盘状态检查时间间隔

doris_cgroups

默认值:空

分配给doris的cgroups

doris_max_pushdown_conjuncts_return_rate

类型:int32
描述:BE在进行HashJoin时,会采取动态分区裁剪的方式将join条件下推到OlapScanner上。当OlapScanner扫描的数据大于32768行时,BE会进行过滤条件检查,如果该过滤条件的过滤率低于该配置,则Doris会停止使用动态分区裁剪的条件进行数据过滤。
默认值:90

doris_max_scan_key_num

类型:int
描述:用于限制一个查询请求中,scan node 节点能拆分的最大 scan key 的个数。当一个带有条件的查询请求到达 scan node 节点时,scan node 会尝试将查询条件中 key 列相关的条件拆分成多个 scan key range。之后这些 scan key range 会被分配给多个 scanner 线程进行数据扫描。较大的数值通常意味着可以使用更多的 scanner 线程来提升扫描操作的并行度。但在高并发场景下,过多的线程可能会带来更大的调度开销和系统负载,反而会降低查询响应速度。一个经验数值为 50。该配置可以单独进行会话级别的配置,具体可参阅 变量 中 max_scan_key_num 的说明。
默认值:1024
当在高并发场景下发下并发度无法提升时,可以尝试降低该数值并观察影响。

doris_scan_range_row_count

类型:int32
描述:BE在进行数据扫描时,会将同一个扫描范围拆分为多个ScanRange。该参数代表了每个ScanRange代表扫描数据范围。通过该参数可以限制单个OlapScanner占用io线程的时间。
默认值:524288

doris_scanner_queue_size

类型:int32
描述:TransferThread与OlapScanner之间RowBatch的缓存队列的长度。Doris进行数据扫描时是异步进行的,OlapScanner扫描上来的Rowbatch会放入缓存队列之中,等待上层TransferThread取走。
默认值:1024

doris_scanner_row_num

默认值:16384

每个扫描线程单次执行最多返回的数据行数

doris_scanner_thread_pool_queue_size

类型:int32
描述:Scanner线程池的队列长度。在Doris的扫描任务之中,每一个Scanner会作为一个线程task提交到线程池之中等待被调度,而提交的任务数目超过线程池队列的长度之后,后续提交的任务将阻塞直到队列之中有新的空缺。
默认值:102400

doris_scanner_thread_pool_thread_num

类型:int32
描述:Scanner线程池线程数目。在Doris的扫描任务之中,每一个Scanner会作为一个线程task提交到线程池之中等待被调度,该参数决定了Scanner线程池的大小。
默认值:48

download_low_speed_limit_kbps

默认值:50 (KB/s)

下载最低限速

download_low_speed_time

默认值:300 (s)

下载时间限制,默认300秒

download_worker_count

默认值:1

下载线程数,默认1个

drop_tablet_worker_count

默认值:3

删除tablet的线程数

enable_metric_calculator

默认值:true

如果设置为 true,metric calculator 将运行,收集BE相关指标信息,如果设置成false将不运行

enable_partitioned_aggregation

类型:bool
描述:BE节点是否通过PartitionAggregateNode来实现聚合操作,如果false的话将会执行AggregateNode完成聚合。非特殊需求场景不建议设置为false。
默认值:true

enable_prefetch

类型:bool
描述:当使用PartitionedHashTable进行聚合和join计算时,是否进行HashBuket的预取,推荐设置为true。
默认值:true

enable_quadratic_probing

类型:bool
描述:当使用PartitionedHashTable时发生Hash冲突时,是否采用平方探测法来解决Hash冲突。该值为false的话,则选用线性探测发来解决Hash冲突。关于平方探测法可参考:quadratic_probing(opens new window)
默认值:true

enable_system_metrics

默认值:true

用户控制打开和关闭系统指标

enable_token_check

默认值:true

用于向前兼容,稍后将被删除

es_http_timeout_ms

默认值:5000 (ms)

通过http连接ES的超时时间,默认是5秒

es_scroll_keepalive

默认值:5m

es scroll Keeplive保持时间,默认5分钟

etl_thread_pool_queue_size

默认值:256

ETL线程池的大小

etl_thread_pool_size

exchg_node_buffer_size_bytes

类型:int32
描述:ExchangeNode节点Buffer队列的大小,单位为byte。来自Sender端发送的数据量大于ExchangeNode的Buffer大小之后,后续发送的数据将阻塞直到Buffer腾出可写入的空间。
默认值:10485760
#file_descriptor_cache_capacity
默认值:32768

文件句柄缓存的容量,默认缓存32768个文件句柄

cache_clean_interval

默认值:1800 (s)

文件句柄缓存清理的间隔,用于清理长期不用的文件句柄。 同时也是Segment Cache的清理间隔时间。

flush_thread_num_per_store

默认值:2

每个store用于刷新内存表的线程数

force_recovery

fragment_pool_queue_size

默认值:2048

单节点上能够处理的查询请求上限

#fragment_pool_thread_num_min
默认值:64

#fragment_pool_thread_num_max
默认值:256

查询线程数,默认最小启动64个线程,后续查询请求动态创建线程,最大创建256个线程

heartbeat_service_port

类型:int32
描述:BE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
默认值:9050
#heartbeat_service_thread_count
类型:int32
描述:执行BE上心跳服务的线程数,默认为1,不建议修改
默认值:1

ignore_broken_disk

​ 当BE启动时,会检查storage_root_path 配置下的所有路径。

ignore_broken_disk=true

如果路径不存在或路径下无法进行读写文件(坏盘),将忽略此路径,如果有其他可用路径则不中断启动。

ignore_broken_disk=false

如果路径不存在或路径下无法进行读写文件(坏盘),将中断启动失败退出。

​ 默认为false

ignore_load_tablet_failure

类型:bool
描述:用来决定在有tablet 加载失败的情况下是否忽略错误,继续启动be
默认值:false
BE启动时,会对每个数据目录单独启动一个线程进行 tablet header 元信息的加载。默认配置下,如果某个数据目录有 tablet 加载失败,则启动进程会终止。同时会在 be.INFO 日志中看到如下错误信息:

load tablets from header failed, failed tablets size: xxx, path=xxx
表示该数据目录共有多少 tablet 加载失败。同时,日志中也会有加载失败的 tablet 的具体信息。此时需要人工介入来对错误原因进行排查。排查后,通常有两种方式进行恢复:

tablet 信息不可修复,在确保其他副本正常的情况下,可以通过 meta_tool 工具将错误的tablet删除。
将 ignore_load_tablet_failure 设置为 true,则 BE 会忽略这些错误的 tablet,正常启动。
#ignore_rowset_stale_unconsistent_delete
类型:bool
描述:用来决定当删除过期的合并过的rowset后无法构成一致的版本路径时,是否仍要删除。
默认值:false
合并的过期 rowset 版本路径会在半个小时后进行删除。在异常下,删除这些版本会出现构造不出查询一致路径的问题,当配置为false时,程序检查比较严格,程序会直接报错退出。 当配置为true时,程序会正常运行,忽略这个错误。一般情况下,忽略这个错误不会对查询造成影响,仅会在fe下发了合并过的版本时出现-230错误。

#inc_rowset_expired_sec
默认值:1800 (s)

导入激活的数据,存储引擎保留的时间,用于增量克隆

#index_stream_cache_capacity
默认值:10737418240

BloomFilter/Min/Max等统计信息缓存的容量

#kafka_broker_version_fallback
默认值:0.10.0

如果依赖的 kafka 版本低于routine load依赖的 kafka 客户端版本, 将使用回退版本 kafka_broker_version_fallback 设置的值,有效值为:0.9.0、0.8.2、0.8.1、0.8.0。

#load_data_reserve_hours
默认值:4 (小时)

用于mini load。mini load数据文件将在此时间后被删除

#load_error_log_reserve_hours
默认值:48(小时)

load错误日志将在此时间后删除

#load_process_max_memory_limit_bytes
默认值:107374182400

单节点上所有的导入线程占据的内存上限,默认值:100G

将这些默认值设置得很大,因为我们不想在用户升级 Doris 时影响负载性能。 如有必要,用户应正确设置这些配置。

#load_process_max_memory_limit_percent
默认值:80

单节点上所有的导入线程占据的内存上限比例,默认80%

将这些默认值设置得很大,因为我们不想在用户升级 Doris 时影响负载性能。 如有必要,用户应正确设置这些配置。

#log_buffer_level
默认值:空

日志刷盘的策略,默认保持在内存中

#madvise_huge_pages
默认值:false

是否使用linux内存大页,默认不启用

#make_snapshot_worker_count
默认值:5

制作快照的线程数

#max_client_cache_size_per_host
默认值:10

每个主机的最大客户端缓存数,BE 中有多种客户端缓存,但目前我们使用相同的缓存大小配置。 如有必要,使用不同的配置来设置不同的客户端缓存。

#max_compaction_threads
类型:int32
描述:Compaction线程池中线程数量的最大值。
默认值:10
#max_consumer_num_per_group
默认值:3

一个数据消费者组中的最大消费者数量,用于routine load

#min_cumulative_compaction_num_singleton_deltas
默认值:5

cumulative compaction策略:最小增量文件的数量

#max_cumulative_compaction_num_singleton_deltas
默认值:1000

cumulative compaction策略:最大增量文件的数量

#max_download_speed_kbps
默认值:50000 (kb/s)

最大下载速度限制

#max_free_io_buffers
默认值:128

对于每个 io 缓冲区大小,IoMgr 将保留的最大缓冲区数从 1024B 到 8MB 的缓冲区,最多约为 2GB 的缓冲区。

#max_garbage_sweep_interval
默认值:3600

磁盘进行垃圾清理的最大间隔,默认一个小时

#max_memory_sink_batch_count
默认值:20

最大外部扫描缓存批次计数,表示缓存max_memory_cache_batch_count * batch_size row,默认为20,batch_size的默认值为1024,表示将缓存20 * 1024行

#max_percentage_of_error_disk
类型:int32
描述:存储引擎允许存在损坏硬盘的百分比,损坏硬盘超过改比例后,BE将会自动退出。
默认值:0
#max_pushdown_conditions_per_column
类型:int

描述:用于限制一个查询请求中,针对单个列,能够下推到存储引擎的最大条件数量。在查询计划执行的过程中,一些列上的过滤条件可以下推到存储引擎,这样可以利用存储引擎中的索引信息进行数据过滤,减少查询需要扫描的数据量。比如等值条件、IN 谓词中的条件等。这个参数在绝大多数情况下仅影响包含 IN 谓词的查询。如 WHERE colA IN (1,2,3,4,…)。较大的数值意味值 IN 谓词中更多的条件可以推送给存储引擎,但过多的条件可能会导致随机读的增加,某些情况下可能会降低查询效率。该配置可以单独进行会话级别的配置,具体可参阅 变量 中 max_pushdown_conditions_per_column 的说明。

默认值:1024

示例

表结构为 id INT, col2 INT, col3 varchar(32), …。

查询请求为 … WHERE id IN (v1, v2, v3, …)

如果 IN 谓词中的条件数量超过了该配置,则可以尝试增加该配置值,观察查询响应是否有所改善。

#max_runnings_transactions_per_txn_map
默认值:100

txn 管理器中每个 txn_partition_map 的最大 txns 数,这是一种自我保护,以避免在管理器中保存过多的 txns

#max_send_batch_parallelism_per_job
类型:int
描述:OlapTableSink 发送批处理数据的最大并行度,用户为 send_batch_parallelism 设置的值不允许超过 max_send_batch_parallelism_per_job ,如果超过, send_batch_parallelism 将被设置为 max_send_batch_parallelism_per_job 的值。
默认值:1
#max_tablet_num_per_shard
默认:1024

每个shard的tablet数目,用于划分tablet,防止单个目录下tablet子目录过多

#max_tablet_version_num
类型:int
描述:限制单个 tablet 最大 version 的数量。用于防止导入过于频繁,或 compaction 不及时导致的大量 version 堆积问题。当超过限制后,导入任务将被拒绝。
默认值:500
#mem_limit
类型:string
描述:限制BE进程使用服务器最大内存百分比。用于防止BE内存挤占太多的机器内存,该参数必须大于0,当百分大于100%之后,该值会默认为100%。
默认值:80%
#memory_limitation_per_thread_for_schema_change
默认值:2 (GB)

单个schema change任务允许占用的最大内存

#memory_maintenance_sleep_time_s
默认值:10

内存维护迭代之间的休眠时间(以秒为单位)

#memory_max_alignment
默认值:16

最大校对内存

#read_size
默认值:8388608

读取大小是发送到 os 的读取大小。 在延迟和整个过程之间进行权衡,试图让磁盘保持忙碌但不引入寻道。 对于 8 MB 读取,随机 io 和顺序 io 的性能相似

#min_buffer_size
默认值:1024

最小读取缓冲区大小(以字节为单位)

#min_compaction_failure_interval_sec
类型:int32
描述:在 cumulative compaction 过程中,当选中的 tablet 没能成功的进行版本合并,则会等待一段时间后才会再次有可能被选中。等待的这段时间就是这个配置的值。
默认值:600
单位:秒
#min_compaction_threads
类型:int32
描述:Compaction线程池中线程数量的最小值。
默认值:10
#min_file_descriptor_number
默认值:60000

BE进程的文件句柄limit要求的下限

#min_garbage_sweep_interval
默认值:180

磁盘进行垃圾清理的最小间隔,时间秒

#mmap_buffers
默认值:false

是否使用mmap分配内存,默认不使用

#num_cores
类型:int32
描述:BE可以使用CPU的核数。当该值为0时,BE将从/proc/cpuinfo之中获取本机的CPU核数。
默认值:0
#num_disks
默认值:0

控制机器上的磁盘数量。 如果为 0,则来自系统设置。

#num_threads_per_core
默认值:3

控制每个内核运行工作的线程数。 通常选择 2 倍或 3 倍的内核数量。 这使核心保持忙碌而不会导致过度抖动

#num_threads_per_disk
默认值:0

每个磁盘的最大线程数也是每个磁盘的最大队列深度

#number_tablet_writer_threads
默认值:16

tablet写线程数

#path_gc_check
默认值:true

是否启用回收扫描数据线程检查,默认启用

#path_gc_check_interval_second
默认值:86400

回收扫描数据线程检查时间间隔,单位秒

#path_gc_check_step
默认值:1000

#path_gc_check_step_interval_ms
默认值:10 (ms)

#path_scan_interval_second
默认值:86400

#pending_data_expire_time_sec
默认值:1800

存储引擎保留的未生效数据的最大时长,默认单位:秒

#periodic_counter_update_period_ms
默认值:500

更新速率计数器和采样计数器的周期,默认单位:毫秒

#plugin_path
默认值:${DORIS_HOME}/plugin

插件路径

#port
类型:int32
描述:BE单测时使用的端口,在实际环境之中无意义,可忽略。
默认值:20001
#pprof_profile_dir
默认值:${DORIS_HOME}/log

pprof profile保存目录

#priority_networks
默认值:空

为那些有很多 ip 的服务器声明一个选择策略。 请注意,最多应该有一个 ip 与此列表匹配。 这是一个以分号分隔格式的列表,用 CIDR 表示法,例如 10.10.10.0/24 , 如果没有匹配这条规则的ip,会随机选择一个。

#priority_queue_remaining_tasks_increased_frequency
默认值:512

the increased frequency of priority for remaining tasks in BlockingPriorityQueue

#publish_version_worker_count
默认值:8

生效版本的线程数

#pull_load_task_dir
默认值:${DORIS_HOME}/var/pull_load

拉取laod任务的目录

#push_worker_count_high_priority
默认值:3

导入线程数,用于处理HIGH优先级任务

#push_worker_count_normal_priority
默认值:3

导入线程数,用于处理NORMAL优先级任务

#push_write_mbytes_per_sec
类型:int32
描述:导入数据速度控制,默认最快每秒10MB。适用于所有的导入方式。
单位:MB
默认值:10
#query_scratch_dirs
类型:string
描述:BE进行数据落盘时选取的目录来存放临时数据,与存储路径配置类似,多目录之间用;分隔。
默认值:${DORIS_HOME}
#release_snapshot_worker_count
默认值:5

释放快照的线程数

#report_disk_state_interval_seconds
默认值:60

代理向 FE 报告磁盘状态的间隔时间(秒)

#report_tablet_interval_seconds
默认值:60

代理向 FE 报告 olap 表的间隔时间(秒)

#report_task_interval_seconds
默认值:10

代理向 FE 报告任务签名的间隔时间(秒)

#result_buffer_cancelled_interval_time
默认值:300

结果缓冲区取消时间(单位:秒)

#routine_load_thread_pool_size
默认值:10

routine load任务的线程池大小。 这应该大于 FE 配置 ‘max_concurrent_task_num_per_be’(默认 5)

#row_nums_check
默认值:true

检查 BE/CE 和schema更改的行号。 true 是打开的,false 是关闭的。

#row_step_for_compaction_merge_log
类型:int64
描述:Compaction执行过程中,每次合并row_step_for_compaction_merge_log行数据会打印一条LOG。如果该参数被设置为0,表示merge过程中不需要打印LOG。
默认值: 0
可动态修改:是
#scan_context_gc_interval_min
默认值:5

此配置用于上下文gc线程调度周期 , 注意:单位为分钟,默认为 5 分钟

#send_batch_thread_pool_thread_num
类型:int32
描述:SendBatch线程池线程数目。在NodeChannel的发送数据任务之中,每一个NodeChannel的SendBatch操作会作为一个线程task提交到线程池之中等待被调度,该参数决定了SendBatch线程池的大小。
默认值:256
#send_batch_thread_pool_queue_size
类型:int32
描述:SendBatch线程池的队列长度。在NodeChannel的发送数据任务之中,每一个NodeChannel的SendBatch操作会作为一个线程task提交到线程池之中等待被调度,而提交的任务数目超过线程池队列的长度之后,后续提交的任务将阻塞直到队列之中有新的空缺。
默认值:102400
#serialize_batch
默认值:false

BE之间rpc通信是否序列化RowBatch,用于查询层之间的数据传输

#sleep_one_second
类型:int32
描述:全局变量,用于BE线程休眠1秒,不应该被修改
默认值:1
#small_file_dir
默认值:${DORIS_HOME}/lib/small_file/

用于保存 SmallFileMgr 下载的文件的目录

#snapshot_expire_time_sec
默认值:172800

快照文件清理的间隔,默认值:48小时

#status_report_interval
默认值:5

配置文件报告之间的间隔;单位:秒

#storage_flood_stage_left_capacity_bytes
默认值:1073741824

数据目录应该剩下的最小存储空间,默认1G

#storage_flood_stage_usage_percent
默认值:95 (95%)

storage_flood_stage_usage_percent和storage_flood_stage_left_capacity_bytes两个配置限制了数据目录的磁盘容量的最大使用。 如果这两个阈值都达到,则无法将更多数据写入该数据目录。 数据目录的最大已用容量百分比

#storage_medium_migrate_count
默认值:1

要克隆的线程数

#storage_page_cache_limit
默认值:20%

缓存存储页大小

#index_page_cache_percentage
类型:int32
描述:索引页缓存占总页面缓存的百分比,取值为[0, 100]。
默认值:10
#storage_root_path
类型:string

描述:BE数据存储的目录,多目录之间用英文状态的分号;分隔。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。

示例1如下:

注意:如果是SSD磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD

storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris

/home/disk1/doris.HDD,50,表示存储限制为50GB,HDD;
/home/disk2/doris.SSD,10,存储限制为10GB,SSD;
/home/disk2/doris,存储限制为磁盘最大容量,默认为HDD
示例2如下:

注意:不论HHD磁盘目录还是SSD磁盘目录,文件夹目录名称都无需添加后缀,storage_root_path参数里指定medium即可

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

说明

/home/disk1/doris,medium:hdd,capacity:10,表示存储限制为10GB, HHD;
/home/disk2/doris,medium:ssd,capacity:50,表示存储限制为50GB, SSD;
默认值:${DORIS_HOME}

#storage_strict_check_incompatible_old_format
类型:bool
描述:用来检查不兼容的旧版本格式时是否使用严格的验证方式
默认值: true
可动态修改:否
配置用来检查不兼容的旧版本格式时是否使用严格的验证方式,当含有旧版本的 hdr 格式时,使用严谨的方式时,程序会 打出 fatal log 并且退出运行;否则,程序仅打印 warn log.

#streaming_load_max_mb
类型:int64
描述:用于限制数据格式为 csv 的一次 Stream load 导入中,允许的最大数据量。单位 MB。
默认值: 10240
可动态修改:是
Stream Load 一般适用于导入几个GB以内的数据,不适合导入过大的数据。

#streaming_load_json_max_mb
类型:int64
描述:用于限制数据格式为 json 的一次 Stream load 导入中,允许的最大数据量。单位 MB。
默认值: 100
可动态修改:是
一些数据格式,如 JSON,无法进行拆分处理,必须读取全部数据到内存后才能开始解析,因此,这个值用于限制此类格式数据单次导入最大数据量。

#streaming_load_rpc_max_alive_time_sec
默认值:1200

TabletsChannel 的存活时间。如果此时通道没有收到任何数据, 通道将被删除。

#sync_tablet_meta
默认值:false

存储引擎是否开sync保留到磁盘上

#sys_log_dir
类型:string
描述:BE日志数据的存储目录
默认值:${DORIS_HOME}/log
#sys_log_level
默认值:INFO

日志级别,INFO < WARNING < ERROR < FATAL

#sys_log_roll_mode
默认值:SIZE-MB-1024

日志拆分的大小,每1G拆分一个日志文件

#sys_log_roll_num
默认值:10

日志文件保留的数目

#sys_log_verbose_level
默认值:10

日志显示的级别,用于控制代码中VLOG开头的日志输出

#sys_log_verbose_modules
默认值:空

日志打印的模块,写olap就只打印olap模块下的日志

#tablet_map_shard_size
默认值:1

tablet_map_lock 分片大小,值为 2^n, n=0,1,2,3,4 ,这是为了更好地管理tablet

#tablet_meta_checkpoint_min_interval_secs
默认值:600 (秒)

TabletMeta Checkpoint线程轮询的时间间隔

#tablet_meta_checkpoint_min_new_rowsets_num
默认值:10

TabletMeta Checkpoint的最小Rowset数目

#tablet_scan_frequency_time_node_interval_second
类型:int64
描述:用来表示记录 metric ‘query_scan_count’ 的时间间隔。为了计算当前一段时间的tablet的scan频率,需要每隔一段时间记录一次 metric ‘query_scan_count’。
默认值:300
#tablet_stat_cache_update_interval_second
默认值:300

tablet状态缓存的更新间隔,单位:秒

#tablet_rowset_stale_sweep_time_sec
类型:int64
描述:用来表示清理合并版本的过期时间,当当前时间 now() 减去一个合并的版本路径中rowset最近创建创建时间大于tablet_rowset_stale_sweep_time_sec时,对当前路径进行清理,删除这些合并过的rowset, 单位为s。
默认值:1800
当写入过于频繁,磁盘空间不足时,可以配置较少这个时间。不过这个时间过短小于5分钟时,可能会引发fe查询不到已经合并过的版本,引发查询-230错误。

#tablet_writer_open_rpc_timeout_sec
默认值:60

在远程BE 中打开tablet writer的 rpc 超时。 操作时间短,可设置短超时时间

#tablet_writer_ignore_eovercrowded
类型:bool
描述:写入时可忽略brpc的’[E1011]The server is overcrowded’错误。
默认值:false
当遇到’[E1011]The server is overcrowded’的错误时,可以调整配置项brpc_socket_max_unwritten_bytes,但这个配置项不能动态调整。所以可通过设置此项为true来临时避免写失败。注意,此配置项只影响写流程,其他的rpc请求依旧会检查是否overcrowded。

#tc_free_memory_rate
默认值:20 (%)

可用内存,取值范围:[0-100]

#tc_max_total_thread_cache_bytes
类型:int64
描述:用来限制 tcmalloc 中总的线程缓存大小。这个限制不是硬限,因此实际线程缓存使用可能超过这个限制。具体可参阅 TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES(opens new window)
默认值: 1073741824
如果发现系统在高压力场景下,通过 BE 线程堆栈发现大量线程处于 tcmalloc 的锁竞争阶段,如大量的 SpinLock 相关堆栈,则可以尝试增大该参数来提升系统性能。参考(opens new window)

#tc_use_memory_min
默认值:10737418240

TCmalloc 的最小内存,当使用的内存小于这个时,不返回给操作系统

#thrift_client_retry_interval_ms
类型:int64
描述:用来为be的thrift客户端设置重试间隔, 避免fe的thrift server发生雪崩问题,单位为ms。
默认值:1000
#thrift_connect_timeout_seconds
默认值:3

默认thrift客户端连接超时时间(单位:秒)

#thrift_rpc_timeout_ms
默认值:5000

thrift默认超时时间,默认:5秒

#thrift_server_type_of_fe
该配置表示FE的Thrift服务使用的服务模型, 类型为string, 大小写不敏感,该参数需要和fe的thrift_server_type参数的设置保持一致。目前该参数的取值有两个,THREADED和THREAD_POOL。

若该参数为THREADED, 该模型为非阻塞式I/O模型,

若该参数为THREAD_POOL, 该模型为阻塞式I/O模型。

#total_permits_for_compaction_score
类型:int64
描述:被所有的compaction任务所能持有的 “permits” 上限,用来限制compaction占用的内存。
默认值:10000
可动态修改:是
#trash_file_expire_time_sec
默认值:259200

回收站清理的间隔,72个小时,当磁盘空间不足时,trash下的文件保存期可不遵守这个参数

#txn_commit_rpc_timeout_ms
默认值:10000

txn 提交 rpc 超时,默认10秒

#txn_map_shard_size
默认值:128

txn_map_lock 分片大小,取值为2^n,n=0,1,2,3,4。这是一项增强功能,可提高管理 txn 的性能

#txn_shard_size
默认值:1024

txn_lock 分片大小,取值为2^n,n=0,1,2,3,4, 这是一项增强功能,可提高提交和发布 txn 的性能

#unused_rowset_monitor_interval
默认值:30

清理过期Rowset的时间间隔,单位:秒

#upload_worker_count
默认值:1

上传文件最大线程数

#use_mmap_allocate_chunk
默认值:false

是否使用 mmap 分配块。 如果启用此功能,最好增加 vm.max_map_count 的值,其默认值为 65530。您可以通过“sysctl -w vm.max_map_count=262144”或“echo 262144 > /proc/sys/vm/”以 root 身份进行操作 max_map_count" ,当这个设置为true时,你必须将chunk_reserved_bytes_limit设置为一个相对较大的数字,否则性能非常非常糟糕。

#user_function_dir
默认值:${DORIS_HOME}/lib/udf

udf函数目录

#webserver_num_workers
默认值:48

webserver默认工作线程数

#webserver_port
类型:int32
描述:BE 上的 http server 的服务端口
默认值:8040
#write_buffer_size
默认值:104857600

刷写前缓冲区的大小

#zone_map_row_num_threshold
类型: int32
描述: 如果一个page中的行数小于这个值就不会创建zonemap,用来减少数据膨胀
默认值: 20
#aws_log_level
类型: int32
描述: AWS SDK 的日志级别
Off = 0,
Fatal = 1,
Error = 2,
Warn = 3,
Info = 4,
Debug = 5,
Trace = 6
默认值: 3
#mem_tracker_level
类型: int16
描述: MemTracker在Web页面上展示的级别,等于或低于这个级别的MemTracker会在Web页面上展示
RELEASE = 0
DEBUG = 1
默认值: 0
#max_segment_num_per_rowset
类型: int32
描述: 用于限制导入时,新产生的rowset中的segment数量。如果超过阈值,导入会失败并报错 -238。过多的 segment 会导致compaction占用大量内存引发 OOM 错误。
默认值: 200
#remote_storage_read_buffer_mb
类型: int32
描述: 读取hdfs或者对象存储上的文件时,使用的缓存大小。
默认值: 16MB
增大这个值,可以减少远端数据读取的调用次数,但会增加内存开销。

#external_table_connect_timeout_sec
类型: int32
描述: 和外部表建立连接的超时时间。
默认值: 5秒
#segment_cache_capacity
类型: int32
描述: Segment Cache 缓存的 Segment 最大数量
默认值: 1000000
默认值目前只是一个经验值,可能需要根据实际场景修改。增大该值可以缓存更多的segment从而避免一些IO。减少该值则会降低内存使用。

#auto_refresh_brpc_channel
类型: bool
描述: 获取brpc连接时,通过hand_shake rpc 判断连接的可用性,如果不可用则重新建立连接
默认值: false
#high_priority_flush_thread_num_per_store
类型:int32
描述:每个存储路径所分配的用于高优导入任务的 flush 线程数量。
默认值:1
#routine_load_consumer_pool_size
类型:int32
描述:routine load 所使用的 data consumer 的缓存数量。
默认值:10
#load_task_high_priority_threshold_second
类型:int32
描述:当一个导入任务的超时时间小于这个阈值是,Doris 将认为他是一个高优任务。高优任务会使用独立的 flush 线程池。
默认:120
#min_load_rpc_timeout_ms
类型:int32
描述:load 作业中各个rpc 的最小超时时间。
默认:20

Doris之BE的所有配置项(全面)相关推荐

  1. Doris之Routine Load

    Routine Load 例行导入(Routine Load)功能为用户提供了一种自动从指定数据源进行数据导入的功能. 本文档主要介绍该功能的实现原理.使用方式以及最佳实践. FE:Frontend, ...

  2. Doris之审计日志插件

    审计日志插件 Doris 的审计日志插件是在 FE 的插件框架基础上开发的.是一个可选插件.用户可以在运行时安装或卸载这个插件. 该插件可以将 FE 的审计日志定期的导入到指定 Doris 集群中,以 ...

  3. Doris之分区缓存(全面)

    分区缓存 需求场景 大部分数据分析场景是写少读多,数据写入一次,多次频繁读取,比如一张报表涉及的维度和指标,数据在凌晨一次性计算好,但每天有数百甚至数千次的页面访问,因此非常适合把结果集缓存起来.在数 ...

  4. Doris之动态分区(全面)

    动态分区 动态分区是在 Doris 0.12 版本中引入的新功能.旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担. 目前实现了动态添加分区及动态删除分区的功能. 动态分区只支持 Ra ...

  5. Doris FE配置参数(全面)

    Doris FE配置参数 该文档主要介绍 FE 的相关配置项. FE 的配置文件 fe.conf 通常存放在 FE 部署路径的 conf/ 目录下. 而在 0.14 版本中会引入另一个配置文件 fe_ ...

  6. Doris之故障恢复(重点)

    Doris之故障恢复 FE 有可能因为某些原因出现无法启动 bdbje.FE 之间无法同步等问题.现象包括无法进行元数据写操作.没有 MASTER 等等.这时,我们需要手动操作来恢复 FE.手动恢复 ...

  7. Doris之磁盘空间管理(重点)

    Doris之磁盘空间管理(重点) 磁盘存储空间有关的系统参数和处理策略. Doris 的数据磁盘空间如果不加以控制,会因磁盘写满而导致进程挂掉.因此我们监测磁盘的使用率和剩余空间,通过设置不同的警戒水 ...

  8. doris同步作业配置参数修改和注意事项

    创建同步作业 创建数据同步作业的的详细语法可以连接到 Doris 后,执行 HELP CREATE SYNC JOB; 查看语法帮助.这里主要详细介绍,创建作业时的注意事项. job_name job ...

  9. 【doris】V1.2.2安装部署单机版or集群版

    FE 主要负责元数据管理.集群管理.用户请求的接入和查询计划的解析等工作. BE 主要负责数据存储.查询计划的执行等工作. 注:如下介绍单机版,集群版的部署方法与单机版一致,需将be安装包复制到其他节 ...

最新文章

  1. JVM: G1和CMS的区别
  2. POJ 1064 -- Cable master(二分)
  3. java 实现一段文字中,出现次数最多的字
  4. HTML5 Audio(音频)
  5. 前后端分手大师——MVVM 模式
  6. html边框大一点,CSS3 框大小(box-sizing)
  7. (王道408考研操作系统)第一章计算机系统概述-第一节2:操作系统的发展史
  8. bootstrap 4 pull-right无效
  9. html实现点赞效果,js实现点赞效果
  10. VC6.0 Raising Error spawning cl.exe solution
  11. 浅谈MySQL索引背后的数据结构及算法
  12. 【渝粤教育】国家开放大学2018年春季 8662-22T特色课(1) 参考试题
  13. 操作系统概念第三章部分作业题答案
  14. 测试:如何选择合适的正交表
  15. matlab小波分解图像,MATLAB小波图像分解
  16. 医院信息化建设,对信息科相关工作者提出了怎样的要求?
  17. 私募基金相关知识介绍(一)——TOT
  18. Java入门需要了解(面向对象之接口-十四)
  19. 查看Win7的真实版本号方法
  20. SHOI 2008 仙人掌图 BZOJ 1023

热门文章

  1. AI进入制造业 节省人工成本也能提高产品性能
  2. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
  3. 【转载】NBU异机恢复oracle
  4. Python 中非常狗的一个坑(在 `a={1:2},`后面多了一个逗号,自动被判为 tuple 类型了)
  5. 几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】
  6. 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析
  7. Milkyway database简析
  8. mfc 学习的第一天
  9. awk命令的使用案列
  10. Maven 实现依赖框架jar包的版本管理