FE 配置 - 日志、服务器和元数据
FE 参数分为动态参数和静态参数。
-
动态参数可通过 SQL 命令进行在线配置和调整,方便快捷。需要注意通过 SQL 命令所做的动态设置在重启 FE 后会失效。如果想让设置长期生效,建议同时修改 fe.conf 文 件。
-
静态参数必须在 FE 配置文件 fe.conf 中进行配置和调整。调整完成后,需要重启 FE 使变更生效。
参数是否为动态参数可通过 ADMIN SHOW CONFIG 返回结果中的 IsMutable 列查看。TRUE 表示动态参数。
静态和动态参数均可通过 fe.conf 文件进行修改。
查看 FE 配置项
FE 启动后,您可以在 MySQL 客户端运行 ADMIN SHOW FRONTEND CONFIG 命令查看参数配置。如果要查询特定参数的配置,请运行以下命令:
ADMIN SHOW FRONTEND CONFIG [LIKE "pattern"];
有关返回字段的详细说明,请参阅 ADMIN SHOW CONFIG。
您必须具有管理员权限才能运行集群管理相关命令。
配置 FE 参数
配置 FE 动态参数
您可以使用 ADMIN SET FRONTEND CONFIG 命令配置或修改 FE 动态参数。
ADMIN SET FRONTEND CONFIG ("key" = "value");
动态设置的配置项,在 FE 重启之后会恢复成 fe.conf 文件中的配置或者默认值。如果需要让配置长期生效,建议设置完之后同时修改 fe.conf 文件,防止重启后修改失效。
配置 FE 静态参数
FE 静态参数不支持在线修改,您需要在 fe.conf 中修改并重启 FE 以使修改生效。
当前主题包含以下类型的 FE 配置:
日志
audit_log_delete_age
- 默认值: 30d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 审计日志文件的保留期限。默认值
30d指定每个审计日志文件可以保留 30 天。StarRocks 会检查 每个审计日志文件,并删除 30 天前生成的那些。 - 引入版本: -
audit_log_dir
- 默认值:
StarRocksFE.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 存储审计日志文件的目录。
- 引入版本: -
audit_log_enable_compress
- 默认值: false
- 类型: Boolean
- 单位: N/A
- 是否可变: No
- 描述: 当为 true 时,生成的 Log4j2 配置会将 ".gz" 后缀附加到轮转的审计日志文件名 (fe.audit.log.*) 中,以便 Log4j2 在轮转时生成压缩的 (.gz) 归档审计日志文件。此设置在 FE 启动期间在 Log4jConfig.initLogging 中读取,并应用于审计日志的 RollingFile appender;它仅影响轮转/归档文件,而不影响活动审计日志。由于该值在启动时初始化,因此更改它需要重启 FE 才能生效。与审计日志轮转设置 (
audit_log_dir、audit_log_roll_interval、audit_roll_maxsize、audit_log_roll_num) 一起使用。 - 引入版本: 3.2.12
audit_log_json_format
- 默认值: false
- 类型: Boolean
- 单位: N/A
- 是否可变: Yes
- 描述: 当为 true 时,FE 审计事件将以结构化 JSON (Jackson ObjectMapper 序列化带注解的 AuditEvent 字段的 Map) 的形式发出,而不是默认的管道分隔的 "key=value" 字符串。此设置会影响 AuditLogBuilder 处理的所有内置审计接收器:连接审计、查询审计、大查询审计(当事件符合条件时,大查询阈值字段会添加到 JSON 中)和慢审计输出。用于大查询阈值的字段和 "features" 字段会进行特殊处理(从普通审计条目中排除;根据适用情况包含在大查询或功能日志中)。启用此功能可使日志可供日志收集器或 SIEM 机器解析;请注意,它会更改日志格式,可能需要更新任何期望旧版管道分隔格式的现有解析器。
- 引入版本: 3.2.7
audit_log_modules
- 默认值:
slow_query, query - 类型: String[]
- 单位: -
- 是否可变: No
- 描述: StarRocks 为其生成审计日志条目的模块。默认情况下,StarRocks 为
slow_query模块和query模块生成审计日志。connection模块从 v3.0 版本开始支持。模块名称用逗号 (,) 和空格分隔。 - 引入版本: -
audit_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: StarRocks 轮转审计日志条目的时间间隔。有效值:
DAY和HOUR。- 如果此参数设置为
DAY,则在审计日志文件名称中添加yyyyMMdd格式的后缀。 - 如果此参数设置为
HOUR,则在审计日志文件名称中添加yyyyMMddHH格式的后缀。
- 如果此参数设置为
- 引入版本: -
audit_log_roll_num
- 默认值: 90
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 在
audit_log_roll_interval参数指定的每个保留期内,可以保留的审计日志文件的最大数量。 - 引入版本: -
audit_stmt_before_execute
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 控制 FE 是否在语句执行前输出
BEFORE_QUERY审计事件。启用后,ConnectProcessor 会在执行前写入一条审计日志,并在执行后继续写入原有的AFTER_QUERY审计日志。对于此分支中的 multi-statement 请求,审计记录仍保持命令级别 ,而不是按每条子语句分别记录。 - 引入版本: -
bdbje_log_level
- 默认值: INFO
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制 StarRocks 中 Berkeley DB Java Edition (BDB JE) 使用的日志级别。在 BDB 环境初始化 BDBEnvironment.initConfigs() 期间,此值将应用于
com.sleepycat.je包的 Java 日志记录器和 BDB JE 环境文件日志记录级别 (EnvironmentConfig.FILE_LOGGING_LEVEL)。接受标准的 java.util.logging.Level 名称,例如 SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST、ALL、OFF。设置为 ALL 可启用所有日志消息。增加详细程度将提高日志量,并可能影响磁盘 I/O 和性能;该值在 BDB 环境初始化时读取,因此仅在环境(重新)初始化后生效。 - 引入版本: v3.2.0
big_query_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制 FE 大查询日志文件 (
fe.big_query.log.*) 在自动删除前的保留时间。该值作为 IfLastModified age 传递给 Log4j 的删除策略 — 任何最后修改时间早于此值的轮转大查询日志都将被删除。支持的后缀包括d(天)、h(小时)、m(分钟)和s(秒)。示例:7d(7 天)、10h(10 小时)、60m(60 分钟)和120s(120 秒)。此项与big_query_log_roll_interval和big_query_log_roll_num共同决定哪些文件被保留或清除。 - 引入版本: v3.2.0
big_query_log_dir
- 默认值:
Config.STARROCKS_HOME_DIR + "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: FE 写入大查询 dump 日志 (
fe.big_query.log.*) 的目录。Log4j 配置使用此路径为fe.big_query.log及其轮转文件创建 RollingFile appender。轮转和保留由big_query_log_roll_interval(基于时间的后缀)、log_roll_size_mb(大小触发器)、big_query_log_roll_num(最大文件数)和big_query_log_delete_age(基于年龄的删除)控制。对于超过用户定义阈值(例如big_query_log_cpu_second_threshold、big_query_log_scan_rows_threshold或big_query_log_scan_bytes_threshold)的查询,会记录大查询记录。使用big_query_log_modules控制哪些模块记录到此文件中。 - 引入版本: v3.2.0
big_query_log_modules
- 默认值:
{"query"} - 类型: String[]
- 单位: -
- 是 否可变: No
- 描述: 启用每个模块大查询日志记录的模块名称后缀列表。典型值是逻辑组件名称。例如,默认的
query会生成big_query.query。 - 引入版本: v3.2.0
big_query_log_roll_interval
- 默认值:
"DAY" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 指定用于构建
big_query日志 appender 滚动文件名称日期部分的时间间隔。有效值(不区分大小写)为DAY(默认)和HOUR。DAY生成每日模式 ("%d{yyyyMMdd}"),HOUR生成每小时模式 ("%d{yyyyMMddHH}")。该值与基于大小的轮转 (big_query_roll_maxsize) 和基于索引的轮转 (big_query_log_roll_num) 结合,形成 RollingFile filePattern。无效值会导致日志配置生成失败 (IOException),并可能阻止日志初始化或重新配置。与big_query_log_dir、big_query_roll_maxsize、big_query_log_roll_num和big_query_log_delete_age一起使用。 - 引入版本: v3.2.0
big_query_log_roll_num
- 默认值: 10
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 每个
big_query_log_roll_interval保留的轮转 FE 大查询日志文件的最大数量。此值绑定到 RollingFile appender 的 DefaultRolloverStrategymax属性,用于fe.big_query.log;当日志轮转时(按时间或按log_roll_size_mb),StarRocks 最多保留big_query_log_roll_num个索引文件(filePattern 使用时间后缀加索引)。超过此数量的文件可能会被轮转删除,big_query_log_delete_age还可以根据最后修改时间删除文件。 - 引入版本: v3.2.0
dump_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: dump 日志文件的保留期限。默认值
7d指定每个 dump 日志文件可以保留 7 天。StarRocks 会检查每个 dump 日志文件,并删除 7 天前生成的那些。 - 引入版本: -
dump_log_dir
- 默认值:
StarRocksFE.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 存储 dump 日志文件的目录。
- 引入版本: -
dump_log_modules
- 默认值: query
- 类型: String[]
- 单位: -
- 是否可变: No
- 描述: StarRocks 为其生成 dump 日志条目的模块。默认情况下,StarRocks 为 query 模块生成 dump 日志。模块名称用逗号 (,) 和空格分隔。
- 引入版本: -
dump_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: StarRocks 轮转 dump 日志条目的时间间隔。有效值:
DAY和HOUR。- 如果此参数设置为
DAY,则在 dump 日志文件名称中添加yyyyMMdd格式的后缀。 - 如果此参数设置为
HOUR,则在 dump 日志文件名称中添加yyyyMMddHH格式的后缀。
- 如果此参数设置为
- 引入版本: -
dump_log_roll_num
- 默认值: 10
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 在
dump_log_roll_interval参数指定的每个保留期内,可以保留的 dump 日志文件的最大数量。 - 引入版本: -
edit_log_write_slow_log_threshold_ms
- 默认值: 2000
- 类型: Int
- 单位: 毫秒
- 是否可变: Yes
- 描述: JournalWriter 用于检测和记录慢速 edit-log 批量写入的阈值(单位为毫秒)。批量提交后,如果批量持续时间超过此值,JournalWriter 将发出 WARN 日志,其中包含批量大小、持续时间和当前 Journal 队列大小(以每约 2 秒一次的速率限制)。此设置仅控制 FE Leader 上潜在 IO 或复制延迟的日志记录/警报;它不改变提交或轮转行为(请参阅
edit_log_roll_num和与提交相关的设置)。无论此阈值如何,指标更新仍会发生。 - 引入版本: v3.2.3
enable_audit_sql
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 当此项设置为
true时,FE 审计子系统会将 ConnectProcessor 处理的 SQL 语句文本记录到 FE 审计日志 (fe.audit.log) 中。存储的语句遵循其他控制:加密语句将被 redacted (AuditEncryptionChecker),如果设置了enable_sql_desensitize_in_log,敏感凭据可能会被 redacted 或脱敏,并且 digest 记录由enable_sql_digest控制。当设置为false时,ConnectProcessor 会在审计事件中将语句文本替换为 "?" — 其他审计字段(用户、主机、持续时间、状态、通过qe_slow_log_ms进行的慢查询检测以及指标)仍会记录。启用 SQL 审计会增加取证和故障排除的可见性,但可能会暴露敏感的 SQL 内容并增加日志量和 I/O;禁用它会提高隐私性,但代价是审计日志中会丢失完整的语句可见性。 - 引入版本: -
enable_print_load_profile_to_log
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 当设置为
true时,导入 profile(如 Stream Load、Routine Load、Broker Load、Merge Commit 等)在被推送到ProfileManager时,会额外以 INFO 级别写入 profile 日志 (fe.profile.log),格式为单行 JSON,与 query profile log 一致。这样即使导入 profile 因profile_info_reserved_num限制而从ProfileManager中被淘汰,仍可从日志中找回。之所以写入 profile 日志而非fe.log,是因为其 JSON layout 的字符串上限是sys_log_json_profile_max_string_length,而非小得多的sys_log_json_max_string_length,因此较大的导入 profile 不会被截断;该文件的轮转与保留由profile_log_*系列参数控制。仅打印查询类型为Load的 profile,查询 profile 不受影响。只有在导入 profile 实际被收集时(例如启用了enable_profile,或导入耗时超过大导入 profile 阈值)才会打印。 - 引入版本: -
enable_profile_log
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 是否启用 profile 日志。启用此功能后,FE 会将每个查询的 profile 日志(由
ProfileManager生成的序列化queryDetailJSON)写入 profile 日志接收器。此日志记录仅在enable_collect_query_detail_info也启用时执行;当enable_profile_log_compress启用时,JSON 可能会在日志记录前进行 gzip 压缩。Profile 日志文件由profile_log_dir、profile_log_roll_num、profile_log_roll_interval管理,并根据profile_log_delete_age进行轮转/删除(支持7d、10h、60m、120s等格式)。禁用此功能会停止写入 profile 日志(减少磁盘 I/O、压缩 CPU 和存储使用)。 - 引入版本: v3.2.5
enable_qe_slow_log
- 默认值: true
- 类型: Boolean
- 单位: N/A
- 是否可变: Yes
- 描述: 当启用时,FE 内置审计插件 (AuditLogBuilder) 将把其测量执行时间("Time" 字段)超过
qe_slow_log_ms配置阈值的查询事件写入慢查询审计日志 (AuditLog.getSlowAudit)。如果禁用,这些慢查询条目将被抑制(常规查询和连接审计日志不受影响)。慢审计条目遵循全局audit_log_json_format设置(JSON 与纯字符串)。使用此标志可以独立于常 规审计日志记录控制慢查询审计生成量;当qe_slow_log_ms较低或工作负载产生许多长时间运行的查询时,关闭它可能会减少日志 I/O。 - 引入版本: 3.2.11
enable_sql_desensitize_in_log
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 当此项设置为
true时,系统会在将敏感 SQL 内容写入日志和查询详细记录之前替换或隐藏这些内容。遵循此配置的代码路径包括 ConnectProcessor.formatStmt(审计日志)、StmtExecutor.addRunningQueryDetail(查询详细信息)和 SimpleExecutor.formatSQL(内部执行器日志)。启用此功能后,无效的 SQL 可能会被替换为固定的脱敏消息,凭据(用户/密码)将被隐藏,并且 SQL 格式化程序必须生成 sanitized 表示(它还可以启用摘要式输出)。这减少了审计/内部日志中敏感文字和凭据的泄露,但也意味着日志和查询详细信息不再包含原始完整 SQL 文本(这可能会影响回放或调试)。 - 引入版本: -
internal_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 指定 FE 内部日志文件(写入
internal_log_dir)的保留期限 。该值是一个持续时间字符串。支持的后缀:d(天)、h(小时)、m(分钟)、s(秒)。示例:7d(7 天)、10h(10 小时)、60m(60 分钟)、120s(120 秒)。此项作为<IfLastModified age="..."/>谓词替换到 Log4j 配置中,该谓词由 RollingFile Delete 策略使用。最后修改时间早于此持续时间的文件将在日志轮转期间删除。增加此值可更快释放磁盘空间,或减少此值可更长时间保留内部物化视图或统计信息日志。 - 引入版本: v3.2.4
internal_log_dir
- 默认值:
Config.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: FE 日志记录子系统用于存储内部日志 (
fe.internal.log) 的目录。此配置将替换到 Log4j 配置中,并决定 InternalFile appender 在何处写入内部/物化视图/统计信息日志,以及internal.<module>下的每个模块日志记录器在何处放置其文件。确保目录存在、可写并具有足够的磁盘空间。此目录中文件的日志轮转和保留由log_roll_size_mb、internal_log_roll_num、internal_log_delete_age和internal_log_roll_interval控制。如果sys_log_to_console启用,内部日志可能会写入控制台而不是此目录。 - 引入版本: v3.2.4
internal_log_json_format
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 当此项设置为
true时,内部统计/审计条目将作为紧凑的 JSON 对象写入统计审计日志记录器。JSON 包含键 "executeType" (Internal类型: QUERY 或 DML)、"queryId"、"sql" 和 "time"(已用毫秒)。当设置为false时,相同的信息将记录为单个格式化文本行("statistic execute: ... | QueryId: [...] | SQL: ...")。启用 JSON 可改进机器解析并与日志处理器集成,但也会导致原始 SQL 文本包含在日志中,这可能会暴露敏感信息并增加日志大小。 - 引入版本: -
internal_log_modules
- 默认值:
{"base", "statistic"} - 类型: String[]
- 单位: -
- 是否可变: No
- 描述: 将接收专用内部日志记录的模块标识符列表。对于每个条目 X,Log4j 将创建一个名为
internal.<X>的日志记录器,其级别为 INFO,并且 additivity="false"。这些日志记录器被路由到内部 appender(写入fe.internal.log),或者在sys_log_to_console启用时路由到控制台。根据需要使用短名称或包片段 — 确切的日志记录器名称变为internal.+ 配置的字符串。内部日志文件轮转和保留遵循internal_log_dir、internal_log_roll_num、internal_log_delete_age、internal_log_roll_interval和log_roll_size_mb。添加模块会导致其运行时消息分离到内部日志记录器流中,以便于调试和审计。 - 引入版本: v3.2.4
internal_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制 FE 内部日志 appender 的基于时间的滚动间隔。接受的值(不区分大小写)为
HOUR和DAY。HOUR生成每小时的文件模式 ("%d{yyyyMMddHH}"),DAY生成每日文件模式 ("%d{yyyyMMdd}"),这些模式由 RollingFile TimeBasedTriggeringPolicy 用于命名轮转的fe.internal.log文件。无效值会导致初始化失败(构建活动 Log4j 配置时抛出 IOException)。滚动行为还取决于相关设置,例如internal_log_dir、internal_roll_maxsize、internal_log_roll_num和internal_log_delete_age。 - 引入版本: v3.2.4
internal_log_roll_num
- 默认值: 90
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 为内部 appender (
fe.internal.log) 保留的轮转 FE 内部日志文件的最大数量。此值用作 Log4j DefaultRolloverStrategymax属性;当发生轮转时,StarRocks 最多保留internal_log_roll_num个归档文件并删除旧文件(也受internal_log_delete_age控制)。较低的值会减少磁盘使用,但会缩短日志历史记录;较高的值会保留更多的历史内部日志。此项与internal_log_dir、internal_log_roll_interval和internal_roll_maxsize协同工作。 - 引入版本: v3.2.4
log_cleaner_audit_log_min_retention_days
- 默认值: 3
- 类型: Int
- 单位: 天
- 是否可变: Yes
- 描述: 审计日志文件的最小保留天数。早于此时间的审计日志文件即使磁盘使用率很高也不会被删除。这确保了审计日志为合规性和故障排除目的而保留。
- 引入版本: -
log_cleaner_check_interval_second
- 默认值: 300
- 类型: Int
- 单位: 秒
- 是否可变: Yes
- 描述: 检查磁盘使用情况和清理日志的间隔(秒)。清理器会定期检查每个日志目录的磁盘使用情况,并在必要时触发清理。默认值为 300 秒(5 分钟)。
- 引入版本: -
log_cleaner_disk_usage_target
- 默认值: 60
- 类型: Int
- 单位: 百分比
- 是否可变: Yes
- 描述: 日志清理后的目标磁盘使用率(百分比)。日志清理将持续进行,直到磁盘使用率降至此阈值以下。清理器会逐个删除最旧的日志文件,直到达到目标。
- 引入版本: -
log_cleaner_disk_usage_threshold
- 默认值: 80
- 类型: Int
- 单位: 百分比
- 是否可变: Yes
- 描述: 触发日志清理的磁盘使用率阈值(百分比)。当磁盘使用率超过此阈值时,日志清理将开始。清理器会独立检查每个配置的日志目录,并处理超过此阈值的目录。
- 引入版本: -
log_cleaner_disk_util_based_enable
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 启用基于磁盘使用率的自动日志清理。启用后,当磁盘使用率超过阈值时,将清理日志。日志清理器作为 FE 节点上的后台守护程序运行,有助于防止日志文件累积导致磁盘空间耗尽。
- 引入版本: -
log_plan_cancelled_by_crash_be
- 默认值: true
- 类型: boolean
- 单位: -
- 是否可变: Yes
- 描述: 当查询因 BE 崩溃或 RPC 异常而取消时,是否启用查询执行计划日志记录。启用此功能后,当查询因 BE 崩溃或
RpcException而取消时,StarRocks 会将查询执行计划(TExplainLevel.COSTS级别)记录为 WARN 条目。日志条目包括 QueryId、SQL 和 COSTS 计划;在 ExecuteExceptionHandler 路径中,还会记录异常堆栈跟踪。当enable_collect_query_detail_info启用时,日志记录会被跳过(计划随后存储在查询详细信息中)—— 在代码路径中,通过验证查询详细信息是否为 null 来执行检查。请注意,在 ExecuteExceptionHandler 中,计划仅在第一次重试时 (retryTime == 0) 记录。启用此功能可能会增加日志量,因为完整的 COSTS 计划可能很大。 - 引入版本: v3.2.0
log_register_and_unregister_query_id
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 是否允许 FE 记录来自 QeProcessorImpl 的查询注册和注销消息(例如,
"register query id = {}"和"deregister query id = {}")。仅当查询具有非空 ConnectContext 且命令不是COM_STMT_EXECUTE或会话变量isAuditExecuteStmt()为 true 时才发出日志。由于这些消息是为每个查询生命周期事件写入的,因此启用此功能可能会产生大量日志并成为高并发环境中的吞吐量瓶颈。启用它用于调试或审计;禁用它以减少日志记录开销并提高性能。 - 引入版本: v3.3.0, v3.4.0, v3.5.0
log_roll_size_mb
- 默认值: 1024
- 类型: Int
- 单位: MB
- 是否可变: No
- 描述: 系统日志文件或审计日志文件的最大大小。
- 引入版本: -
proc_profile_file_retained_days
- 默认值: 1
- 类型: Int
- 单位: 天
- 是否可变: Yes
- 描述: 保留
sys_log_dir/proc_profile下生成的进程分析文件(CPU 和内存)的天数。ProcProfileCollector 通过将proc_profile_file_retained_days天数从当前时间(格式为 yyyyMMdd-HHmmss)中减去来计算截止时间,并删除时间戳部分在字典序上早于该截止时间的分析文件(即timePart.compareTo(timeToDelete) < 0)。文件删除还遵循由proc_profile_file_retained_size_bytes控制的基于大小的截止时间。分析文件使用cpu-profile-和mem-profile-前缀,并在收集后进行压缩。 - 引入版本: v3.2.12
proc_profile_file_retained_size_bytes
- 默认值: 2L * 1024 * 1024 * 1024 (2147483648)
- 类型: Long
- 单位: 字节
- 是否可变: Yes
- 描述: 在分析目录下保留的收集到的 CPU 和内存分析文件(文件名前缀为
cpu-profile-和mem-profile-)的最大总字节数。当有效分析文件的总和超过proc_profile_file_retained_size_bytes时,收集器将删除最旧的分析文件,直到剩余总大小小于或等于proc_profile_file_retained_size_bytes。早于proc_profile_file_retained_days的文件也将被删除,无论大小如何。此设置控制分析归档的磁盘使用情况,并与proc_profile_file_retained_days交互以确定删除顺序和保留。 - 引入版本: v3.2.12
profile_log_delete_age
- 默认值: 1d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制 FE profile 日志文件在符合删除条件之前保留多长时间。该值注入到 Log4j 的
<IfLastModified age="..."/>策略(通过Log4jConfig)中,并与轮转设置(如profile_log_roll_interval和profile_log_roll_num)一起应用。支持的后缀:d(天)、h(小时)、m(分钟)、s(秒)。例如:7d(7 天)、10h(10 小时)、60m(60 分钟)、120s(120 秒)。 - 引入版本: v3.2.5
profile_log_dir
- 默认值:
Config.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: FE profile 日志的写入目录。Log4jConfig 使用此值放置与 profile 相关的 appender(在此目录下创建
fe.profile.log和fe.features.log等文件)。这些文件的轮转和保留由profile_log_roll_size_mb、profile_log_roll_num和profile_log_delete_age控制;时间戳后缀格式由profile_log_roll_interval控制(支持 DAY 或 HOUR)。由于默认目录位于STARROCKS_HOME_DIR下,请确保 FE 进程对此目录具有写入和轮转/删除权限。 - 引入版本: v3.2.5
profile_log_latency_threshold_ms
- 默认值:0
- 类型:Long
- 单位:毫秒
- 是否动态:是
- 描述:写入
fe.profile.log的查询最小延迟(毫秒)。仅当查询执行时间大于或等于该值时才记录 profile。设为 0 表示记录所有 profile(无阈值)。设为正数可仅记录较慢的查询以降低日志量。 - 引入版本:-
profile_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 控制用于生成 profile 日志文件名日期部分的时间粒度。有效值(不区分大小写)为
HOUR和DAY。HOUR生成模式"%d{yyyyMMddHH}"(每小时时间桶),DAY生成"%d{yyyyMMdd}"(每日时间桶)。此值在 Log4j 配置中计算profile_file_pattern时使用,并且仅影响轮转文件名称中基于时间的组件;基于大小的轮转仍由profile_log_roll_size_mb控制,保留由profile_log_roll_num/profile_log_delete_age控制。无效值会导致日志初始化期间发生 IOException(错误消息:"profile_log_roll_interval config error: <value>")。对于高容量 profiling,选择HOUR以限制每小时的文件大小,或选择DAY进行每日聚合。 - 引入版本: v3.2.5
profile_log_roll_num
- 默认值: 5
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 指定 Log4j 的 DefaultRolloverStrategy 为 profile 日志记录器保留的最大轮转 profile 日志文件数。此值作为
${profile_log_roll_num}注入到日志 XML 中(例如<DefaultRolloverStrategy max="${profile_log_roll_num}" fileIndex="min">)。轮转由profile_log_roll_size_mb或profile_log_roll_interval触发;当发生轮转时,Log4j 最多保留这些索引文件,旧的索引文件将符合删除条件。磁盘上的实际保留也受profile_log_delete_age和profile_log_dir位置的影响。较低的值会减少磁盘使用,但会限制保留的历史记录;较高的值会保留更多的历史 profile 日志。 - 引入版本: v3.2.5
profile_log_roll_size_mb
- 默认值: 1024
- 类型: Int
- 单位: MB
- 是否可变: No
- 描述: 设置触发 FE profile 日志文件基于大小轮转的大小阈值(以兆字节为单位)。此值由 Log4j RollingFile SizeBasedTriggeringPolicy 用于
ProfileFileappender;当 profile 日志超过profile_log_roll_size_mb时,它将被轮转。当达到profile_log_roll_interval时,也可以按时间 进行轮转——任一条件都会触发轮转。结合profile_log_roll_num和profile_log_delete_age,此项控制保留多少历史 profile 文件以及何时删除旧文件。轮转文件的压缩由enable_profile_log_compress控制。 - 引入版本: v3.2.5
qe_slow_log_ms
- 默认值: 5000
- 类型: Long
- 单位: 毫秒
- 是否可变: Yes
- 描述: 用于判断查询是否为慢查询的阈值。如果查询的响应时间超过此阈值,则会在 fe.audit.log 中记录为慢查询。
- 引入版本: -
slow_lock_log_l2_info_interval_ms
- 默认值: 3000L
- 类型: Long
- 单位: 毫秒
- 是否可变: Yes
- 别名:
slow_lock_log_every_ms(原名,为向后兼容保留——两个名字指向同一参数)。 - 描述: L2 慢锁日志档位的最小时间间隔——一条不含堆栈的完整 lock-info JSON。慢锁日志按三档逐级降级、节流由严到松:L1 = 完整信息 + 堆栈(
slow_lock_log_l1_stack_interval_ms),L2 = 完整信息、无堆栈(本参数),L3 = 纯文本最简信息(slow_lock_log_l3_brief_interval_ms)。对一次慢锁事件,输出当 前节流允许的最高档;选中较高档会同时消耗较低档的窗口,因此总日志量不会超过最松那一档被允许的速率。节流作用域随发射所在的锁层不同:在LockManager.logSlowLockTrace中是全局(一个 static 门控覆盖所有 rid);在QueryableReentrantReadWriteLock中是per-instance(每个锁对象——例如每个RoutineLoadJob——各有一份门控);在老LockUtils路径中是per-Database。设置为0(或负数)可禁用 L2 门控(总是放行)。值越大日志越稀,值越小完整信息诊断越密。 - 引入版本: v3.2.0(原名
slow_lock_log_every_ms);v4.1 重命名为slow_lock_log_l2_info_interval_ms。
slow_lock_print_stack
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 控制慢锁告警 JSON 中是否抓取 owner / 当前线程的堆栈跟踪的总开关。同时作用于
LockManager.logSlowLockTrace(owner 的"stack"字段)和QueryableReentrantReadWriteLock.getLockInfoToJson(老 db 锁路径与RoutineLoadJobper-job 锁所用,涵盖 owner / 最早 reader / 当前线程的"stack"字段)。启用此功能通过提供持有锁的精确线程堆栈来帮助调试;禁用它可减少日志量和在高并发环境中捕获和序列化堆栈跟踪导致的 CPU/内存开销。开启后,抓取频率还会受到slow_lock_log_l1_stack_interval_ms的限速控制。 - 引入版本: v3.3.16, v3.4.5, v3.5.1
slow_lock_log_l1_stack_interval_ms
- 默认值: 30000
- 类型: Long
- 单位: 毫秒
- 是否可变: Yes
- 描述: 跨慢锁日志事件之间堆栈抓取的最小时间间隔。仅在
slow_lock_print_stack为true时生效。节流作用域随层不同:在LockManager.logSlowLockTrace中是全局(一个 static 门控覆盖所有 rid);在QueryableReentrantReadWriteLock.getLockInfoToJson中是per-instance(每个锁对象各有一份门控)。当开关打开但距上次抓取未达到该间隔时,"stack"字段在 LockManager 路径会被替换为标记"throttled",在 QueryableReentrantReadWriteLock 路径会被省略;warn 日志的其余部分(rid、owners、waiters、queryId、时间统计等)如果外层事件门 (slow_lock_log_l2_info_interval_ms) 允许的话仍正常输出。设置为0(或负数)可禁用限速,恢复每次慢锁事件都抓取堆栈的旧行为。Thread.getStackTrace会触发 JVM safepoint,在慢锁事件频繁的大集群中开销显著——该参数在不影响诊断日志输出的前提下限制这部分开销。 - 引入版本: v4.1
slow_lock_max_waiter_count_to_log
- 默认值: 30
- 类型: Int
- 单位: -
- 是否可变: Yes
- 描述: 单条慢锁日志事件中序列化的 waiter 条目数上限。同时作用于
LockManager.logSlowLockTrace("waiter"数组)和QueryableReentrantReadWriteLock.getLockInfoToJson(老 db 锁路径与RoutineLoadJobper-job 锁所用的"queuedReaders"/"queuedWriters"数组)。当实际 waiter 数超过该上限时,前 N 个 waiter 被逐条列出,剩余部分由附加在数组末尾的单条 trailer{"omitted": "remain M waiters omitted"}汇总。用于在极端竞争场景下控制 Gson 序列化开销和日志行长度,同时保留 waiter 总数的诊断信息。设置为0(或负数)可禁用该上限,序列化所有 waiter。 - 引入版本: v4.1
slow_lock_log_l3_brief_interval_ms
- 默认值: 1000
- 类型: Long
- 单位: 毫秒
- 是否可变: Yes
- 描述: L3 慢锁日志档位的最小时间间隔——当更丰富的档位(L1 的
slow_lock_log_l1_stack_interval_ms、L2 的slow_lock_log_l2_info_interval_ms)都被节流时,输出一条纯文本 warn(无 JSON、无堆栈)。这是三档中最松的一档。最简信息每间隔至多输出一条:在 L3 门控仍关闭的窗口内到达的慢锁事件会被抑制(不打)。它不保证每个事件都留痕——只是把持续竞争下的最长静默时间限制在一个最简信息间隔以内。应调得比另两档更小:slow_lock_log_l3_brief_interval_ms < slow_lock_log_l2_info_interval_ms < slow_lock_log_l1_stack_interval_ms。设置为0(或负数)会让最简信息不限速——此时每个被节流的事件都留一行(开销可预测,但 storm 下可能每秒很多条)。作用域规则与其他慢锁节流一致(LockManager全局,QueryableReentrantReadWriteLockper-instance)。 - 引入版本: v4.1
slow_lock_threshold_ms
- 默认值: 3000L
- 类型: long
- 单位: 毫秒
- 是否可变: Yes
- 描述: 用于将锁操作或持有的锁分类为“慢”的阈值(以毫秒为单位)。当锁的等待或持有时间超过此值时,StarRocks 将(根据上下文)发出诊断日志,包括堆栈跟踪或等待/所有者信息,并在 LockManager 中在此延迟后开始死锁检测。它由 LockUtils(慢锁日志记录)、QueryableReentrantReadWriteLock(过滤慢速读取器)、LockManager(死锁检测延迟和慢锁跟踪)、LockChecker(周期性慢锁检测)和其他调用者(例如 DiskAndTabletLoadReBalancer 日志记录)使用。降低此值会增加敏感性和日志记录/诊断开销;将其设置为 0 或负值会禁用初始基于等待的死锁检测延迟行为。与
slow_lock_log_l2_info_interval_ms、slow_lock_print_stack和slow_lock_stack_trace_reserve_levels一起调整。 - 引入版本: 3.2.0
sys_log_delete_age
- 默认值: 7d
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 系统日志文件的保留期限。默认值
7d指定每个系统日志文件可以保留 7 天。StarRocks 会检查每个系统日志文件,并删除 7 天前生成的那些。 - 引入版本: -
sys_log_dir
- 默认值:
StarRocksFE.STARROCKS_HOME_DIR+ "/log" - 类型: String
- 单位: -
- 是否可变: No
- 描述: 存储系统日志文件的目录。
- 引入版本: -
sys_log_enable_compress
- 默认值: false
- 类型: boolean
- 单位: -
- 是否可变: No
- 描述: 当此项设置为
true时,系统会将 ".gz" 后缀附加到轮转的系统日志文件名中,以便 Log4j 会生成 gzip 压缩的轮转 FE 系统日志(例如,fe.log.*)。此值在 Log4j 配置生成期间(Log4jConfig.initLogging / generateActiveLog4jXmlConfig)读取,并控制 RollingFile filePattern 中使用的sys_file_postfix属性。启用此功能可减少保留日志的磁盘使用,但会增加轮转期间的 CPU 和 I/O,并更改日志文件名,因此读取日志的工具 或脚本必须能够处理 .gz 文件。请注意,审计日志使用单独的压缩配置,即audit_log_enable_compress。 - 引入版本: v3.2.12
sys_log_format
- 默认值: "plaintext"
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 选择 FE 日志使用的 Log4j 布局。有效值:
"plaintext"(默认)和"json"。值不区分大小写。"plaintext"配置 PatternLayout,具有人类可读的时间戳、级别、线程、类.方法:行,以及 WARN/ERROR 的堆栈跟踪。"json"配置 JsonTemplateLayout 并发出结构化 JSON 事件(UTC 时间戳、级别、线程 ID/名称、源文件/方法/行、消息、异常堆栈跟踪),适用于日志聚合器(ELK、Splunk)。JSON 输出遵循sys_log_json_max_string_length和sys_log_json_profile_max_string_length以获取最大字符串长度。 - 引入版本: v3.2.10
sys_log_json_max_string_length
- 默认值: 1048576
- 类型: Int
- 单位: 字节
- 是否可变: No
- 描述: 设置用于 JSON 格式系统日志的 JsonTemplateLayout "maxStringLength" 值。当
sys_log_format设置为"json"时,如果字符串值字段(例如 "message" 和字符串化的异常堆栈跟踪)的长度超过此限制,它们将被截断。该值注入到Log4jConfig.generateActiveLog4jXmlConfig()中生成的 Log4j XML 中,并应用于默认、警告、审计、dump 和大查询布局。profile 布局使用单独的配置 (sys_log_json_profile_max_string_length)。降低此值会减小日志大小,但可能会截断有用信息。 - 引入版本: 3.2.11
sys_log_json_profile_max_string_length
- 默认值: 104857600 (100 MB)
- 类型: Int
- 单位: 字节
- 是否可变: No
- 描述: 当
sys_log_format为 "json" 时,设置 profile(及相关功能)日志 appender 的 JsonTemplateLayout 的 maxStringLength。JSON 格式 profile 日志中的字符串字段值将被截断为此外字节长度;非字符串字段不受影响。此项应用于 Log4jConfigJsonTemplateLayout maxStringLength,并在使用plaintext日志记录时被忽略。保持足够大的值以获取您需要的完整消息,但请注意,较大的值会增加日志大小和 I/O。 - 引入版本: v3.2.11
sys_log_level
- 默认值: INFO
- 类型: String
- 单位: -
- 是否可变: No
- 描述: 系统日志条目分类的严重性级别。有效值:
INFO、WARN、ERROR和FATAL。 - 引入版本: -
sys_log_roll_interval
- 默认值: DAY
- 类型: String
- 单位: -
- 是否可变: No
- 描述: StarRocks 轮转系统日志条目的时间间隔。有效值:
DAY和HOUR。- 如果此参数设置为
DAY,则在系统日志文件名称中添加yyyyMMdd格式的后缀。 - 如果此参数设置为
HOUR,则在系统日志文件名称中添加yyyyMMddHH格式的后缀。
- 如果此参数设置为
- 引入版本: -
sys_log_roll_num
- 默认值: 10
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: 在
sys_log_roll_interval参数指定的每个保留期内,可以保留的系统日志文件的最大数量。 - 引入版本: -
sys_log_to_console
- 默认值: false(除非环境变量
SYS_LOG_TO_CONSOLE设置为 "1") - 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 当此项设置为
true时,系统会将 Log4j 配置为将所有日志发送到控制台 (ConsoleErr appender),而不是基于文件的 appender。此值在生成活动 Log4j XML 配置时读取(这会影响根日志记录器和每个模块日志记录器 appender 的选择)。其值在进程启动时从SYS_LOG_TO_CONSOLE环境变量中捕获。在运行时更改它无效。此配置通常用于容器化或 CI 环境中,其中 stdout/stderr 日志收集优于写入日志文件。 - 引入版本: v3.2.0
sys_log_verbose_modules
- 默认值: 空字符串
- 类型: String[]
- 单位: -
- 是否可变: No
- 描述: StarRocks 为其生成系统日志的模块。如果此参数设置为
org.apache.starrocks.catalog,则 StarRocks 仅为 catalog 模块生成系统日志。模块名称用逗号 (,) 和空格分隔。 - 引入版本: -
sys_log_warn_modules
- 默认值:
- 类型: String[]
- 单位: -
- 是否可变: No
- 描述: 启动时系统将配置为 WARN 级别日志记录器并路由到警告 appender (SysWF) —
fe.warn.log文件的日志记录器名称或包前缀列表。条目插入到生成的 Log4j 配置中( 与内置警告模块如 org.apache.kafka、org.apache.hudi 和 org.apache.hadoop.io.compress 一起),并生成类似<Logger name="... " level="WARN"><AppenderRef ref="SysWF"/></Logger>的日志记录器元素。建议使用完全限定的包和类前缀(例如 "com.example.lib"),以抑制常规日志中的嘈杂 INFO/DEBUG 输出,并允许单独捕获警告。 - 引入版本: v3.2.13
服务器
enable_auth_check
- 默认值:true
- 类型:Boolean
- 单位:-
- 是否动态:否
- 描述:是否开启鉴权检查功能。取值范围:
TRUE和FALSE。TRUE表示开启该功能。FALSE表示关闭该功能。 - 引入版本:-
brpc_idle_wait_max_time
- 默认值: 10000
- 类型: Int
- 单位: 毫秒
- 是否可变: No
- 描述: bRPC 客户端在空闲状态下等待的最长时间。
- 引入版本: -
brpc_inner_reuse_pool
- 默认值: true
- 类型: boolean
- 单位: -
- 是否可变: No
- 描述: 控制底层 BRPC 客户端是否为连接/通道使用内部共享重用池。StarRocks 在 BrpcProxy 构造 RpcClientOptions 时(通过
rpcOptions.setInnerResuePool(...))读取brpc_inner_reuse_pool。启用时 (true),RPC 客户端重用内部池以减少每次调用的连接创建,降低 FE 到 BE / LakeService RPC 的连接 churn、内存和文件描述符使用量。禁用时 (false),客户端可能会创建更隔离的池(以更高的资源使用量为代价增加并发隔离)。更改此值需要重启进程才能生效。 - 引入版本: v3.3.11, v3.4.1, v3.5.0
brpc_min_evictable_idle_time_ms
- 默认值: 120000
- 类型: Int
- 单位: 毫秒
- 是否可变: No
- 描述: 空闲的 BRPC 连接在连接池中必须保持空闲状态才能被驱逐的时间(毫秒)。应用于
BrpcProxy使用的 RpcClientOptions(通过 RpcClientOptions.setMinEvictableIdleTime)。增加此值以保持空闲连接更长时间(减少重新连接的 churn);降低此值可更快释放未使用的套接字(减少资源使用)。与brpc_connection_pool_size和brpc_idle_wait_max_time一起调整,以平衡连接重用、池增长和驱逐行为。 - 引入版本: v3.3.11, v3.4.1, v3.5.0
brpc_reuse_addr
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 当为 true 时,StarRocks 会设置 socket 选项,允许 brpc RpcClient 创建的客户端 socket(通过 RpcClientOptions.setReuseAddress)重用本地地址。启用此选项可减少绑定失败,并允许在套接字关闭后更快地重新绑定本地端口,这对于高速率连接 churn 或快速重启非常有用。当为 false 时,地址/端口重用被禁用,这可以降低意外端口共享的可能性,但可能会增加瞬时绑定错误。此选项与
brpc_connection_pool_size和brpc_short_connection配置的连接行为交互,因为它会影响客户端套接字可以多快地重新绑定和重用。 - 引入版本: v3.3.11, v3.4.1, v3.5.0
brpc_connection_pool_retry_wait_time_ms
- 默认值: 10
- 类型: Int
- 单位: 毫秒
- 是否可变: Yes
- 描述: bRPC 连接池异常时的重试等待时间。当
ChannelPool.getChannel()抛出NoSuchElementException(直接抛出或被RuntimeException包装)时,重试逻辑会等待该时间后再尝试重新连接。典型场景如 TCP 握手期间 SYN 包丢失导致的瞬时连接池故障。 - 引入版本: -
cluster_name
- 默认值: StarRocks Cluster
- 类型: String
- 单位: -
- 是否可变: No
- 描述: FE 所属的 StarRocks 集群的名称。集群名称显示在网页的
Title上。 - 引入版本: -
dns_cache_ttl_seconds
- 默认值: 60
- 类型: Int
- 单位: 秒
- 是否可变: No
- 描述: 成功 DNS 查找的 DNS 缓存 TTL(存活时间,Time-To-Live),单位为秒。这设置了 Java 安全属性
networkaddress.cache.ttl,它控制 JVM 缓存成功 DNS 查找的时间。将此项设置为-1以允许系统始终缓存信息,或设置为0以禁用缓存。这在 IP 地址经常变化的环境中特别有用,例如 Kubernetes 部署或使用动态 DNS 时。 - 引入版本: v3.5.11, v4.0.4
enable_http_async_handler
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 是否允许系统异步处理 HTTP 请求。如果启用此功能,Netty 工作线程收到的 HTTP 请求将提交到单独的 线程池进行服务逻辑处理,以避免阻塞 HTTP 服务器。如果禁用,Netty 工作线程将处理服务逻辑。
- 引入版本: 4.0.0
enable_http_validate_headers
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 控制 Netty 的 HttpServerCodec 是否执行严格的 HTTP 头部验证。该值在
HttpServer初始化 HTTP 管道时传递给 HttpServerCodec(参见 UseLocations)。默认值为 false 以保持向后兼容性,因为较新的 Netty 版本强制执行更严格的头部规则 (https://github.com/netty/netty/pull/12760)。设置为 true 以强制执行符合 RFC 的头部检查;这样做可能会导致来自旧客户端或代理的格式错误或不符合规范的请求被拒绝。更改需要重启 HTTP 服务器才能生效。 - 引入版本: v3.3.0, v3.4.0, v3.5.0
enable_https
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 是否在 FE 节点中与 HTTP 服务器一起启用 HTTPS 服务器。
- 引入版本: v4.0
frontend_address
- 默认值: 0.0.0.0
- 类型: String
- 单位: -
- 是否可变: No
- 描述: FE 节点的 IP 地址。
- 引入版本: -
http_async_threads_num
- 默认值: 4096
- 类型: Int
- 单位: -
- 是否可变: Yes
- 描述: 异步 HTTP 请求处理的线程池大小。别名为
max_http_sql_service_task_threads_num。 - 引入版本: 4.0.0
http_backlog_num
- 默认值: 1024
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: FE 节点中 HTTP 服务器持有的 backlog 队列的长度。
- 引入版本: -
http_max_chunk_size
- 默认值: 8192
- 类型: Int
- 单位: 字节
- 是否可变: No
- 描述: 设置 FE HTTP 服务器中 Netty 的 HttpServerCodec 处理的单个 HTTP 块的最大允许大小(以字节为单位)。它作为第三个参数传递给 HttpServerCodec,并限制分块传输或流式请求/响应期间的块长度。如果传入块超过此值,Netty 将引发帧过大错误(例如 TooLongFrameException),并且请求可能会被拒绝。对于合法的分块上传,请增加此值;保持较小以减少内存压力并减小 DoS 攻击的表面积。此设置与
http_max_initial_line_length、http_max_header_size和enable_http_validate_headers一起使用。 - 引入版本: v3.2.0
http_max_header_size
- 默认值: 32768
- 类型: Int
- 单位: 字节
- 是否可变: No
- 描述: Netty 的
HttpServerCodec解析的 HTTP 请求头块的最大允许大小(以字节为单位)。StarRocks 将此值传递给HttpServerCodec(作为Config.http_max_header_size);如果传入请求的头(名称和值组合)超过此限制,编解码器将拒绝该请求(解码器异常),并且连接/请求将失败。仅当客户端合法发送非常大的头(大型 cookie 或许多自定义头)时才增加此值;较大的值会增加每个连接的内存使用。与http_max_initial_line_length和http_max_chunk_size一起调整。更改需要重启 FE。 - 引入版本: v3.2.0
http_max_initial_line_length
- 默认值: 4096
- 类型: Int
- 单位: 字节
- 是否可变: No
- 描述: 设置 HttpServer 中使用的 Netty
HttpServerCodec接受的 HTTP 初始请求行(方法 + 请求目标 + HTTP 版本)的最大允许长度(以字节为单位)。该值传递给 Netty 的解码器,并且初始行长于此值的请求将被拒绝 (TooLongFrameException)。仅当您必须支持非常长的请求 URI 时才增加此值;较大的值会增加内存使用,并可能增加暴露于格式错误/请求滥用的风险。与http_max_header_size和http_max_chunk_size一起调整。 - 引入版本: v3.2.0
http_port
- 默认值: 8030
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: FE 节点中 HTTP 服务器监听的端口。
- 引入版本: -
enable_http_auth
-
默认值: false
-
类型: Boolean
-
单位: -
-
是否可变: No
-
引入版本: v4.2.0
-
描述: 是否对大部分外部 FE HTTP 接口启用 Basic Auth。凭证通过
AuthenticationHandler.authenticate()校验,因此 LDAP / security integration 在 HTTP 路径上的工作方式与 MySQL 协议一致。以下接口始终豁免:- 公开探针 / 可观测性:
/api/bootstrap、/api/oauth2。 - 由 handler 自行通过 IP 白名单或 token 鉴权的对等 FE / 控制面端点:
/image、/check、/journal_id、/info、/role、/dump、/dump_starmgr、/service_id、/static、/api/_meta_replay_state、/api/get_small_file。
特权接口还要求会话中当前激活了 SYSTEM 级 RBAC 权限(
OPERATE或NODE)。若用户已 GRANT 但未设为默认角色,需SET DEFAULT ROLE <roles> TO <user>;,或将全局变量activate_all_roles_on_login设为true让角色登录时自动激活。LDAP / security integration 的组 → 角色映射会自动激活。 - 公开探针 / 可观测性:
http_web_page_display_hardware
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 当为 true 时,HTTP 索引页面 (/index) 将包含一个通过 oshi 库填充的硬件信息部分(CPU、内存、进程、磁盘、文件系统、网络等)。oshi 可能会间接调用系统工具或读取系统文件(例如,它可以执行
getent passwd等命令),这可能会暴露敏感的系统数据。如果您需要更严格的安全性或希望避免在主机上执行这些间接命令,请将此配置设置为 false 以禁用 Web UI 上硬件详细信息的收集和显示。 - 引入版本: v3.2.0
http_worker_threads_num
- 默认值: 0
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: HTTP 服务器处理 HTTP 请求的工作线程数。如果为负值或 0,则线程数将是 CPU 核心数的两倍。
- 引入版本: v2.5.18, v3.0.10, v3.1.7, v3.2.2
https_port
- 默认值: 8443
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: FE 节点中 HTTPS 服务器监听的端口。
- 引入版本: v4.0
max_mysql_service_task_threads_num
- 默认值: 4096
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: FE 节点中 MySQL 服务器可运行以处理任务的最大线程数。
- 引入版本: -
max_task_runs_threads_num
- 默认值: 512
- 类型: Int
- 单位: 线程
- 是否可变: No
- 描述: 控制任务运行执行器线程池中的最大线程数。此值是并发任务运行执行的上限;增加它会提高并行度,但也会增加 CPU、内存和网络使用率,而减少它可能导致任务运行积压和更高的延迟。根据预期的并发调度作业和可用的系统资源调整此值。
- 引入版本: v3.2.0
memory_tracker_enable
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: Yes
- 描述: 启用 FE 内存跟踪器子系统。当
memory_tracker_enable设置为true时,MemoryUsageTracker定期扫描注册的元数据模块,更新内存中的MemoryUsageTracker.MEMORY_USAGEmap,记录总计,并使MetricRepo在指标输出中暴露内存使用和对象计数 gauge。使用memory_tracker_interval_seconds控制采样间隔。启用此功能有助于监控和调试内存消耗,但会引入 CPU 和 I/O 开销以及额外的指标基数。 - 引入版本: v3.2.4
memory_tracker_interval_seconds
- 默认值: 60
- 类型: Int
- 单位: 秒
- 是否可变: Yes
- 描述: FE
MemoryUsageTracker守护程序轮询和记录 FE 进程和已注册MemoryTrackable模块内存使用情况的间隔(秒)。当memory_tracker_enable设置为true时,跟踪器以此频率运行,更新MEMORY_USAGE,并记录聚合的 JVM 和跟踪模块使用情况。 - 引入版本: v3.2.4
mysql_nio_backlog_num
- 默认值: 1024
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: FE 节点中 MySQL 服务器持有的 backlog 队列的长度。
- 引入版本: -
mysql_send_packet_timeout_ms
- 默认值: 60000
- 类型: Long
- 单位: Milliseconds
- 是否可变: Yes
- 描述: MySQL 协议通道单次写包的超时时间。限制 FE worker 在发送结果行时等待慢客户端 TCP 接收缓冲区排空的时长。不限制的话 worker 可能在
Selector.select()上无限阻塞,且查询无法被KILL QUERY终止。设置为0禁用(旧版无限等待行为)。 - 引入版本: v4.1
mysql_server_version
- 默认值: 8.0.33
- 类型: String
- 单位: -
- 是否可变: Yes
- 描述: 返回给客户端的 MySQL 服务器版本。修改此参数将影响以下情况的版本信息:
select version();- 握手包版本
- 全局变量
version的值 (show variables like 'version';)
- 引入版本: -
mysql_service_io_threads_num
- 默认值: 4
- 类型: Int
- 单位: -
- 是否可变: No
- 描述: FE 节点中 MySQL 服务器可运行以处理 I/O 事件的最大线程数。
- 引入版本: -
mysql_service_kill_after_disconnect
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 控制当检测到 MySQL TCP 连接关闭(读取时 EOF)时服务器如何处理会话。如果设置为
true,服务器会立即杀死该连接的所有正在运行的查询并立即执行清理。如果设置为false,服务器在断开连接时不会杀死正在运行的查询,并且仅在没有待处理请求任务时执行清理,允许长时间运行的查询在客户端断开连接后继续。注意:尽管有一条简短的注释建议 TCP keep-alive,但此参数专门管理断开连接后的杀死行为,应根据您是希望终止孤立查询(在不可靠/负载均衡客户端后推荐)还是允许其完成进行设置。 - 引入版本: -
mysql_service_nio_enable_keep_alive
- 默认值: true
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 启用 MySQL 连接的 TCP Keep-Alive。对于负载均衡器后面的长时间空闲连接很有用。
- 引入版本: -
net_use_ipv6_when_priority_networks_empty
- 默认值: false
- 类型: Boolean
- 单位: -
- 是否可变: No
- 描述: 一个布尔值,用于控制在未指定
priority_networks时是否优先使用 IPv6 地址。true表示当托管节点的服务器同时具有 IPv4 和 IPv6 地址且未指定priority_networks时,允许系统优先使用 IPv6 地址。 - 引入版本: v3.3.0