BE 配置项 - 日志、服务器和元数据
部分 BE 节点配置项为动态参数,您可以通过命令在线修改。其他配置项为静态参数,需要通过修改 be.conf 文件后重启 BE 服务使相关修改生效。
查看 BE 配置项
您可以通过以下命令查看 BE 配置项:
SELECT * FROM information_schema.be_configs [WHERE NAME LIKE "%<name_pattern>%"]
配置 BE 参数
配置 BE 动态参数
您可以通过更新 information_schema.be_configs 中的值来配置 BE 节点的动态参数。
warning
设置无效的值可能会导致未知行为。在运行更新配置的命令之前,请务必仔细核对。
-- 将 <config_key> 替换为配置键,将 <config_value> 替换为配置值。
UPDATE information_schema.be_configs SET VALUE = <config_value> WHERE name = "<config_key>";
配置 BE 静态参数
BE 静态参数不支持在线修改,您需要在 be.conf 中修改并重启 BE 服务。
当前主题包含以下类型的 FE 配置:
日志
diagnose_stack_trace_interval_ms
- 默认值:1800000
- 类型:Int
- 单位:Milliseconds
- 是否动态:是
- 描述:DiagnoseDaemon 处理
STACK_TRACE请求时,两次堆栈诊断的最小时间间隔。若距离上次采集不足该间隔则跳过,以减少频繁堆栈抓取的 CPU 和日志开销;排查瞬时问题可适当调小。 - 引入版本:v3.5.0
load_rpc_slow_log_frequency_threshold_seconds
- 默认值:60
- 类型:Int
- 单位:Seconds
- 是否动态:是
- 描述:控制导入类 RPC 超时慢日志的打印频率。超过超时的导入 RPC 会按该间隔输出慢日志(包含 load channel 运行时 profile);设为 0 则几乎每次超时都会记录。
- 引入版本:v3.4.3, v3.5.0
log_buffer_level
- 默认值:空字符串
- 类型:String
- 单位:-
- 是否动态:否
- 描述:日志落盘的策略。默认值表示日志缓存在内存中。有效值为
-1和0。-1表示日志不在内存中缓存。 - 引入版本:-
pprof_profile_dir
- 默认值:
${STARROCKS_HOME}/log - 类型:string
- 单位:-
- 是否动态:否
- 描述:StarRocks 写入 pprof 工件(jemalloc 堆快照和 gperftools CPU 配置文件)的目录路径。代码会在此目录下构造文件名(例如
heap_profile.<pid>.<rand>和starrocks_profile.<pid>.<rand>),并且 /pprof/ 下的 HTTP 处理器会提供这些配置文件。在启动时,如果pprof_profile_dir非空,StarRocks 会尝试创建该目录。请确保该路径存在或对 BE 进程可写,并且有足够的磁盘空间;性能分析可能产生较大的文件,并在运行时影响性能。 - 引入版本:v3.2.0
sys_log_dir
- 默认值:
${STARROCKS_HOME}/log - 类型:String
- 单位:-
- 是否动态:否
- 描述:存放日志的地方,包括 INFO、WARNING、ERROR、FATAL 日志。
- 引入版本:-
sys_log_level
- 默认值:INFO
- 类型:String
- 单位:-
- 是否动态:是(自 v3.3.0、v3.2.7 及 v3.1.12 起)
- 描述:日志级别。有效值:INFO、WARNING、ERROR、FATAL。自 v3.3.0、v3.2.7 及 v3.1.12 起,该参数变为动态参数。
- 引入版本:-
sys_log_roll_mode
- 默认值:SIZE-MB-1024
- 类型:String
- 单位:-
- 是否动态:否
- 描述:系统日志分卷的模式。有效值包括
TIME-DAY、TIME-HOUR和SIZE-MB-大小。默认值表示日志被分割成大小为 1GB 的日志卷。 - 引入版本:-
sys_log_roll_num
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:日志卷保留的数目。
- 引入版本:-
sys_log_timezone
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否在日志前缀中显示时区信息。
true表示显示时区信息,false表示不显示。 - 引入版本:-
sys_log_verbose_level
- 默认值:10
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:日志显示的级别,用于控制代码中 VLOG 开头的日志输出。
- 引入版本:-
sys_log_verbose_modules
- 默认值:
- 类型:Strings
- 单位:-
- 是否动态:否
- 描述:设置需要输出 VLOG 日志的文件名(去掉文件扩展名)或文件名通配符。可以指定多个文件名,用逗号分隔。例如,如果将此配置项设置为
storage_engine,tablet_manager,StarRocks 将打印 storage_engine.cpp、tablet_manager.cpp 文件的 VLOG 日志。您也可以使用通配符,如设置为*表示打印所有文件的 VLOG 日志。VLOG 日志打印级别通过sys_log_verbose_level参数控制。 - 引入版本:-
服务器
abort_on_large_memory_allocation
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:是
- 描述:当单次分配超过
g_large_memory_alloc_failure_threshold时的处理策略。设为true会直接std::abort()(硬退出);设为false则阻塞并让分配返回失败(nullptr/ENOMEM)。仅对未走 TRY_CATCH_BAD_ALLOC 的分配生效,生产环境通常保持关闭,排查异常超大分配时可暂时开启。 - 引入版本:v3.4.3, v3.5.0, v4.0.0
arrow_flight_port
- 默认值:-1
- 类型:Int
- 单位:Port
- 是否动态:否
- 描述:TCP 端口,用于 BE 的 Arrow Flight SQL 服务器。将其设置为
-1以禁用 Arrow Flight 服务。在非 macOS 构建中,BE 在启动期间会调用通过该端口启动 Arrow Flight SQL Server;如果端口不可用,服务器启动会失败并且 BE 进程退出。配置的端口会在心跳负载中上报给 FE。 - 引入版本:v3.4.0, v3.5.0
be_exit_after_disk_write_hang_second
- 默认值:60
- 类型:Int
- 单位:秒
- 是否动态:否
- 描述:磁盘挂起后触发 BE 进程退出的等待时间。
- 引入版本:-
be_http_num_workers
- 默认值:48
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:HTTP Server 线程数。
- 引入版本:-
be_http_port
- 默认值:8040
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:BE HTTP Server 端口。
- 引入版本:-
be_port
- 默认值:9060
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:BE 上 Thrift Server 的端口,用于接收来自 FE 的请求。
- 引入版本:-
be_service_threads
- 默认值:64
- 类型:Int
- 单位:Threads
- 是否动态:否
- 描述:BE Thrift 服务用于处理后端 RPC/执行请求的工作线程数。该值在创建 BackendService 时传递给 ThriftServer,用于控制可用的并发请求处理器数量;当所有工作线程都忙碌时,请求会排队。根据预期的并发 RPC 负载和可用的 CPU/内存调整:增大该值可以提高并发度,但也会增加每线程内存和上下文切换开销;减小则限制并行处理能力,可能增加请求延迟。
- 引入版本:v3.2.0
brpc_connection_type
- 默认值:
"single" - 类型:String
- 单位:-
- 是否动态:否
- 描述:bRPC 渠道的连接模式。
single(默认)每个渠道复用一条长连接;pooled为每端点维护连接池以提升并发(增加 FD 占用);short为短连接,每次 RPC 建连以减少持久连接但会提高延迟和建连开销。 - 引入版本:v3.2.5
brpc_max_body_size
- 默认值:2147483648
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:bRPC 最大的包容量。
- 引入版本:-
brpc_max_connections_per_server
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:客户端为每个远程服务器端点保持的最大持久 bRPC 连接数。对于每个端点,
BrpcStubCache会创建一个StubPool,其_stubs向量会预留为此大小。首次访问时会创建新的 stub,直到达到限制。之后,现有的 stub 将以轮询方式返回。增加此值可以提高每个端点的并发度(降低单通道的争用),代价是更多的文件描述符、内存和通道数。 - 引入版本:v3.2.0
brpc_num_threads
- 默认值:-1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:bRPC 的 bthread 线程数量,
-1表示和 CPU 核数一样。 - 引入版本:-
brpc_port
- 默认值:8060
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:bRPC 的端口,可以查看 bRPC 的一些网络统计信息。
- 引入版本:-
brpc_socket_max_unwritten_bytes
- 默认值:1073741824
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:单个 bRPC 套接字允许的未写出数据上限。达到上限后
Socket.Write会返回 EOVERCROWDED,以限制单连接内存占用;值过小可能导致大消息/慢端发送失败,过大则提高内存占用。 - 引入版本:v3.2.0
brpc_stub_expire_s
- 默认值:3600
- 类型:Int
- 单位:Seconds
- 是否动态:是
- 描述:BRPC stub 缓存的过期时间,默认 60 minutes。
- 引入版本:-
compress_rowbatches
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:BE 之间 RPC 通信是否压缩 RowBatch。
true表示压缩(减少带宽、增加 CPU),false表示不压缩。 - 引入版本:-
consistency_max_memory_limit_percent
- 默认值:20
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:一致性相关任务的内存百分比上限。启动时会取
consistency_max_memory_limit(字节)与process_mem_limit * percent / 100的较小值作为最终上限;process_mem_limit为 -1 时视为不限制。非法取值(<0 或 >100)按 100 处理。 - 引入版本:v3.2.0
consistency_max_memory_limit
- 默认值:1099511627776
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:一致性相关任务的内存字节上限。最终上限取该值与
process_mem_limit * consistency_max_memory_limit_percent / 100的最小值;process_mem_limit为 -1 时视为不限制。 - 引入版本:v3.2.0
disable_mem_pools
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否禁用 MemPool 的 chunk 复用。禁用后每次分配使用独立 chunk,降低长时间保留的池化内存但增加分配次数和 chunk 数量。一般保持默认 false,仅在诊断或低内存场景下考虑开启。
- 引入版本:v3.2.0
compress_rowbatches
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:BE 之间 RPC 通信是否压缩 RowBatch,用于查询层之间的数据传输。
true表示压缩,false表示不压缩。 - 引入版本:-
consistency_max_memory_limit_percent
- 默认值:20
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:用于计算一致性相关任务内存预算的百分比上限。在 BE 启动期间,最终的一致性限制计算为从
consistency_max_memory_limit(字节)解析出的值与(process_mem_limit * consistency_max_memory_limit_percent / 100)两者的最小值。如果process_mem_limit未设置(-1),则一致性内存视为无限。对于consistency_max_memory_limit_percent,小于 0 或大于 100 的值将被视为 100。调整此值会增加或减少为一致性操作保留的内存,从而影响查询和其他服务可用的内存。 - 引入版本:v3.2.0
delete_worker_count_normal_priority
- 默认值:2
- 类型:Int
- 单位:Threads
- 是否动态:否
- 描述:在 BE agent 上专门用于处理删除(REALTIME_PUSH with DELETE)任务的普通优先级工作线程数量。启动时,此值会与 delete_worker_count_high_priority 相加以确定 DeleteTaskWorkerPool 的大小(参见 agent_server.cpp)。线程池会将前 delete_worker_count_high_priority 个线程分配为 HIGH 优先级,其余为 NORMAL;普通优先级线程处理标准删除任务并有助于整体删除吞吐量。增加此值可提高并发删除能力(会增加 CPU/IO 使用);减少则可降低资源争用。
- 引入版本:v3.2.0
disable_mem_pools
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否禁用 MemPool。将此项设置为
true时,会禁用 MemPool 的 chunk 池化机制,使每次分配得到其自身大小的 chunk,而不是重用或扩展池化的 chunk。禁用池化会减少长期保留的缓冲区内存,但代价是更频繁的分配、更多的 chunk 数量以及跳过完整性检查(因大量 chunk 而避免)。保持disable_mem_pools为false(默认)可以受益于分配重用和更少的系统调用。仅在必须避免大规模池化内存保留(例如内存受限的环境或诊断运行)时,将其设为true。 - 引入版本:v3.2.0
enable_https
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:当此项设置为
true时,BE 的 bRPC 服务配置为使用 TLS,并使用ssl_certificate_path和ssl_private_key_path指定的证书和私钥。这样会为传入的 bRPC 连接启用 HTTPS/TLS。客户端必须使用 TLS 连接。请确保证书和密钥文件存在、且 BE 进程可访问,并符合 bRPC/SSL 的要求。 - 引入版本:v4.0.0
enable_jemalloc_memory_tracker
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:该项设置为
true时,BE 会启动一个后台线程(jemalloc_tracker_daemon),该线程以每秒一次的频率轮询 Jemalloc 统计信息,并将 Jemalloc 的 "stats.metadata" 值更新到 GlobalEnv 的 Jemalloc 元数据 MemTracker 中。这可确保 Jemalloc 元数据的消耗被计入 StarRocks 进程的内存统计,防止低报 Jemalloc 内部使用的内存。该 Tracker 仅在非 macOS 构建上编译/启动(#ifndef APPLE),并以名为 "jemalloc_tracker_daemon" 的守护线程运行。仅在未使用 Jemalloc 或者 Jemalloc 跟踪被有意以不同方式管理时才禁用,否则请保持启用以维护准确的内存计量和分配保护。 - 引入版本:v3.2.12
enable_jvm_metrics
- 默认值:false
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否初始化并注册 JVM 相关指标(heap、GC、线程等)。这是预留的兼容开关,未来可能移除;系统级指标由
enable_system_metrics控制。 - 引入版本:v4.0.0
get_pindex_worker_count
- 默认 值:0
- 类型:Int
- 单位:-
- 是否动态:是
- 描述:为 UpdateManager 中的 "get_pindex" 线程池设置工作线程数,该线程池用于加载/获取持久化索引数据(在为主键表应用 rowset 时使用)。如果设置为大于 0 则系统应用该值;如果设置为 0 则运行时回调使用 CPU 核心数。在初始化时,改线程池的最大线程数计算为
max(get_pindex_worker_count, max_apply_thread_cnt * 2),其中max_apply_thread_cnt是 apply-thread 池的最大值。增大此值可提高 pindex 加载的并行度;降低则减少并发和内存/CPU 使用。 - 引入版本:v3.2.0
heartbeat_service_port
- 默认值:9050
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:BE 心跳服务端口,用于接收来自 FE 的心跳。
- 引入版本:-
heartbeat_service_thread_count
- 默认值:1
- 类型:Int
- 单位:-
- 是否动态:否
- 描述:心跳线程数。
- 引入版本:-
local_library_dir
- 默认值:
${UDF_RUNTIME_DIR} - 类型:string
- 单位:-
- 是否动态:否
- 描述:BE 上的本地目录,用于存放 UDF(用户自定义函数)库并作为 Python UDF worker 进程的工作目录。StarRocks 会将 UDF 库从 HDFS 复制到此路径,在
<local_library_dir>/pyworker_<pid>创建每个 worker 的 Unix 域套接字,并在 exec 前将 Python worker 进程的工作目录切换到此目录。该目录必须存在、对 BE 进程可写,并且位于支持 Unix 域套接字的文件系统上(即本地文件系统)。由于该配置在运行时不可变,请在启动前设置并确保每个 BE 上具有足够的权限和磁盘空间。 - 引入版本:v3.2.0
max_transmit_batched_bytes
- 默认值:262144
- 类型:Int
- 单位:Bytes
- 是否动态:否
- 描述:在单个传输请求中可累积的序列化字节数上限,超过该值后会将请求刷新到网络。发送端实现会将序列化的 ChunkPB 负载加入到 PTransmitChunkParams 请求中,并在累计字节数超过
max_transmit_batched_bytes或达到 EOS 时发送该请求。增大此值可降低 RPC 频率并提高吞吐量,但会以更高的每次请求延迟和内存使用为代价;减小此值可降低延迟和内存使用,但会增加 RPC 频率。 - 引入版本:v3.2.0