参数配置

服务启动之后,在运行的过程中可能会出现调整配置参数的情况,以满足业务需求。修改BE,FE的配置项以后,都需要重启使其生效

FE配置项

配置项默认值作用
log_roll_size_mb1024日志拆分的大小,每1G拆分一个日志
sys_log_dirStarRocksFe.STARROCKS_HOME_DIR/log日志保留的目录
sys_log_levelINFO日志级别,INFO < WARNING < ERROR < FATAL
sys_log_verbose_modules空字符串日志打印的模块,写org.apache.starrocks.catalog就只打印catalog模块下的日志
sys_log_roll_intervalDAY日志拆分的时间间隔
sys_log_delete_age7d日志删除的间隔
sys_log_roll_mode1024日志拆分的大小,每1G拆分一个日志
audit_log_dirstarrocksFe.STARROCKS_HOME_DIR/log审计日志保留的目录
audit_log_roll_num90审计日志保留的数目
audit_log_modules"slow_query", "query"审计日志打印的模块,默认保留slow_query和query
qe_slow_log_ms5000Slow query的认定时长,默认5000ms
audit_log_roll_intervalDAY审计日志拆分的时间间隔
audit_log_delete_age30d审计日志删除的间隔
audit_log_roll_modeTIME-DAY审计日志拆分的时间间隔
label_keep_max_second259200label保留时长,默认3天,保留太久会消耗很多内存
history_job_keep_max_second604800历史任务最大的保留时长,例如schema change任务,默认7天
label_clean_interval_second14400label清理的间隔
transaction_clean_interval_second30transaction清理的间隔
meta_dirStarRocksFe.STARROCKS_HOME_DIR/meta元数据保留目录
tmp_dirstarrocksFe.STARROCKS_HOME_DIR/temp_ddir临时文件保存目录,例如backup/restore等进程保留的目录
edit_log_port9010FE Group(Master, Follower, Observer)之间通信用的端口
edit_log_roll_num50000Image日志拆分大小
meta_delay_toleration_second300非master节点容忍的最大元数据落后的时间
master_sync_policySYNCMaster日志刷盘的方式,默认是SYNC
replica_sync_policySYNCFollower日志刷盘的方式,默认是SYNC
replica_ack_policySIMPLE_MAJORITY日志被认为有效的形式,默认是多数派返回确认消息,就认为生效
bdbje_heartbeat_timeout_second30BDBJE心跳超时的间隔
bdbje_lock_timeout_second1BDBJE锁超时的间隔
txn_rollback_limit100事务回滚的上限
frontend_address0.0.0.0FE IP地址
priority_networks空字符串以CIDR形式10.10.10.0/24指定BE IP地址,适用于机器有多个IP,需要特殊指定的形式
metadata_failure_recoveryfalse强制重置FE的元数据,慎用
ignore_meta_checkfalse忽略元数据落后的情形
max_bdbje_clock_delta_ms5000Master与Non-master最大容忍的时钟偏移
http_port8030Http Server的端口
http_backlog_num1024HttpServer port backlog
thrift_backlog_num1024ThriftServer port backlog
rpc_port9020FE 上的 thrift server 端口
query_port9030FE 上的 mysql server 端口
mysql_service_nio_enabledfalseFE 连接服务的nio是否开启
mysql_service_io_threads_numfalseFE 连接服务线程数
auth_token空字符串Token是否自动开启
tablet_create_timeout_second1建表超时时长
max_create_table_timeout_second60建表最大超时时间
publish_version_timeout_second30版本生效的超时时间
publish_version_interval_ms10发送版本生效任务的时间间隔
load_straggler_wait_second300控制BE副本最大容忍的导入落后时长,超过这个时长就进行克隆
max_layout_length_per_row100000单行最大的长度,100KB
load_checker_interval_second5导入轮询的间隔
broker_load_default_timeout_second14400Broker Load的超时时间,默认4个小时
mini_load_default_timeout_second3600小批量导入的超时时间,默认1小时
insert_load_default_timeout_second3600Insert Into语句的超时时间,默认1小时
stream_load_default_timeout_second600StreamLoad超时时间,默认10分钟
max_load_timeout_second259200适用于所有导入,最大超时,3天
min_load_timeout_second1适用于所有导入,最小超时,1秒
desired_max_waiting_jobs100最多等待的任务,适用于所有的任务,建表、导入、schema change
max_running_txn_num_per_db100并发导入的任务数
async_load_task_pool_size10导入任务执行的线程池大小
tablet_delete_timeout_second2删除表的超时时间
capacity_used_percent_high_water0.75Backend上磁盘使用容量的度量值,超过0.75之后,尽量不在往这个tablet上发送建表,克隆的任务,直到恢复正常
alter_table_timeout_second86400Schema change超时时间
max_backend_down_time_second3600BE和FE失联之后,FE容忍BE重新加回来的最长时间
storage_cooldown_second2592000介质迁移的时间,默认30天
catalog_trash_expire_second86400删表/数据库之后,元数据在回收站中保留的时长,超过这个时长,数据就不可以在恢复
min_bytes_per_broker_scanner67108864单个实例处理的最小数据量,默认64MB
max_broker_concurrency100单个任务最大并发实例数,默认100个
load_parallel_instance_num1单个BE上并发实例数,默认1个
export_checker_interval_second5导出线程轮询间隔
export_running_job_num_limit5导出作业最大的运行数目
export_task_default_timeout_second7200导出作业超时时长,默认2小时
export_max_bytes_per_be_per_task268435456单个导出任务在单个be上导出的最大数据量,默认256M
export_task_pool_size5导出任务线程池大小,默认5个
consistency_check_start_time23FE发起副本一致性检测的起始时间
consistency_check_end_time4FE发起副本一致性检测的终止时间
check_consistency_default_timeout_second600副本一致性检测的超时时间
qe_max_connection1024FE上最多接收的连接数,适用于所有用户
max_conn_per_user100单个用户能够处理的最大连接数
query_colocate_join_memory_limit_penalty_factor8Colocte Join的内存现在
disable_colocate_joinfalse不开启Colocate Join
expr_children_limit10000查询中in中可以涉及的数目
expr_depth_limit3000查询嵌套的层次
localezh_CN.UTF-8字符集
remote_fragment_exec_timeout_ms5000FE发送查询规划的RPC超时时间,不涉及任务执行
max_query_retry_time2FE上查询重试的次数
catalog_try_lock_timeout_ms5000Catalog Lock获取的超时时长
disable_load_jobfalse不接收任何导入任务,集群出问题时的止损措施
es_state_sync_interval_second10FE获取Elastic Search Index的时间
tablet_repair_delay_factor_second60FE控制进行副本修复的间隔
max_routine_load_job_num100最大的routine load作业数
max_routine_load_task_concurrent_num5每个routine load作业最大并发执行的task数
max_routine_load_task_num_per_be5每个be最大并发执行的routine load task数,需要小于等于be的配置routine_load_thread_pool_size
max_routine_load_batch_size524288000每个routine load task导入的最大数据量,默认500M
routine_load_task_consume_second3每个routine load task消费数据的最大时间,默认为3s
routine_load_task_timeout_second15每个routine load task超时时间,默认15s

BE 配置项

配置项默认值作用
be_port9060BE 上 thrift server 的端口,用于接收来自 FE 的请求
brpc_port8060BRPC的端口,可以查看BRPC的一些网络统计信息
brpc_num_threads-1BRPC的bthreads线程数量,-1表示和cpu核数一样
priority_networks空字符串以CIDR形式10.10.10.0/24指定BE IP地址,适用于机器有多个IP,需要指定优先使用的网络
heartbeat_service_port9050心跳服务端口(thrift),用户接收来自 FE 的心跳
heartbeat_service_thread_count1心跳线程数
create_tablet_worker_count3创建tablet的线程数
drop_tablet_worker_count3删除tablet的线程数
push_worker_count_normal_priority3导入线程数,处理NORMAL优先级任务
push_worker_count_high_priority3导入线程数,处理HIGH优先级任务
publish_version_worker_count2生效版本的线程数
clear_transaction_task_worker_count1清理事务的线程数
alter_tablet_worker_count3进行schema change的线程数
clone_worker_count3克隆的线程数
storage_medium_migrate_count1介质迁移的线程数,SATA 迁移到 SSD
check_consistency_worker_count1计算tablet的校验和(checksum)
report_task_interval_seconds10汇报单个任务的间隔。建表,删除表,导入,schema change都可以被认定是任务
report_disk_state_interval_seconds60汇报磁盘状态的间隔。汇报各个磁盘的状态,以及上面的数据量等等
report_tablet_interval_seconds60汇报tablet的间隔。汇报所有的tablet的最新版本
alter_tablet_timeout_seconds86400Schema change超时时间
sys_log_dir${STARROCKS_HOME}/log存放日志的地方,包括INFO, WARNING, ERROR, FATAL等日志
user_function_dir${STARROKCS_HOME}/lib/udfUDF程序存放的地方
sys_log_levelINFO日志级别,INFO < WARNING < ERROR < FATAL
sys_log_roll_modeSIZE-MB-1024日志拆分的大小,每1G拆分一个日志
sys_log_roll_num10日志保留的数目
sys_log_verbose_modules*日志打印的模块,写olap就只打印olap模块下的日志
sys_log_verbose_level10日志显示的级别,用于控制代码中VLOG开头的日志输出
log_buffer_level空字符串日志刷盘的策略,默认保持在内存中
num_threads_per_core3每个CPU core启动的线程数
compress_rowbatchestrueBE之间rpc通信是否压缩RowBatch,用于查询层之间的数据传输
serialize_batchfalseBE之间rpc通信是否序列化RowBatch,用于查询层之间的数据传输
status_report_interval5查询汇报profile的间隔,用于FE收集查询统计信息
doris_scanner_thread_pool_thread_num48存储引擎并发扫描磁盘的线程数,统一管理在线程池中
doris_scanner_thread_pool_queue_size102400存储引擎最多接收的任务数
doris_scan_range_row_count524288存储引擎拆分查询任务的粒度,512K
doris_scanner_queue_size1024存储引擎支持的扫描任务数
doris_scanner_row_num16384每个扫描线程单次执行最多返回的数据行数
doris_max_scan_key_num1024查询最多拆分的scan key数目
column_dictionary_key_ratio_threshold0字符串类型的取值比例,小于这个比例采用字典压缩算法
column_dictionary_key_size_threshold0字典压缩列大小,小于这个值采用字典压缩算法
memory_limitation_per_thread_for_schema_change2单个schema change任务允许占用的最大内存
max_unpacked_row_block_size104857600单个block最大的字节数,100MB
file_descriptor_cache_clean_interval3600文件句柄缓存清理的间隔,用于清理长期不用的文件句柄
disk_stat_monitor_interval5磁盘状态检测的间隔
unused_rowset_monitor_interval30清理过期Rowset的时间间隔
storage_root_path空字符串存储数据的目录
max_percentage_of_error_disk0磁盘错误达到一定比例,BE退出
default_num_rows_per_data_block1024每个block的数据行数
max_tablet_num_per_shard1024每个shard的tablet数目,用于划分tablet,防止单个目录下tablet子目录过多
pending_data_expire_time_sec1800存储引擎保留的未生效数据的最大时长
inc_rowset_expired_sec1800导入生效的数据,存储引擎保留的时间,用于增量克隆
max_garbage_sweep_interval3600磁盘进行垃圾清理的最大间隔
min_garbage_sweep_interval180磁盘进行垃圾清理的最小间隔
snapshot_expire_time_sec172800快照文件清理的间隔,48个小时
trash_file_expire_time_sec259200回收站清理的间隔,72个小时
row_nums_checktrueCompaction完成之后,前后Rowset行数对比
file_descriptor_cache_capacity32768文件句柄缓存的容量
min_file_descriptor_number60000BE进程的文件句柄limit要求的下线
index_stream_cache_capacity10737418240BloomFilter/Min/Max等统计信息缓存的容量
storage_page_cache_limit20GPageCache的容量
disable_storage_page_cachefalse是否开启PageCache
base_compaction_start_hour20BaseCompaction开启的时间
base_compaction_end_hour7BaseCompaction结束的时间
base_compaction_check_interval_seconds60BaseCompaction线程轮询的间隔
base_compaction_num_cumulative_deltas5BaseCompaction触发条件之一:Cumulative文件数目要达到的限制
base_compaction_num_threads_per_disk1每个磁盘BaseCompaction线程的数目
base_cumulative_delta_ratio0.3BaseCompaction触发条件之一:Cumulative文件大小达到Base文件的比例
base_compaction_interval_seconds_since_last_operation86400BaseCompaction触发条件之一:上一轮BaseCompaction距今的间隔
base_compaction_write_mbytes_per_sec5BaseCompaction写磁盘的限速
cumulative_compaction_check_interval_seconds10CumulativeCompaction线程轮询的间隔
min_cumulative_compaction_num_singleton_deltas5CumulativeCompaction触发条件之一:Singleton文件数目要达到的下限
max_cumulative_compaction_num_singleton_deltas1000CumulativeCompaction触发条件之一:Singleton文件数目要达到的上限
cumulative_compaction_num_threads_per_disk1每个磁盘CumulativeCompaction线程的数目
cumulative_compaction_budgeted_bytes104857600BaseCompaction触发条件之一:Singleton文件大小的总和限制,100MB
cumulative_compaction_write_mbytes_per_sec100CumulativeCompaction写磁盘的限速
min_compaction_failure_interval_sec600Tablet Compaction失败之后,再次被调度的间隔。
max_compaction_concurrency-1BaseCompaction + CumulativeCompaction的最大并发,-1就是没有限制
webserver_port8040Http Server端口
webserver_num_workers5Http Server线程数
periodic_counter_update_period_ms500Counter统计信息的间隔
load_data_reserve_hours4小批量导入生成的文件保留的时间
load_error_log_reserve_hours48导入数据信息保留的时长
number_tablet_writer_threads16流式导入的线程数
streaming_load_max_mb10240流式导入单个文件大小的上限
streaming_load_rpc_max_alive_time_sec1200流式导入RPC的超时时间
tablet_writer_rpc_timeout_sec600TabletWriter的超时时长
fragment_pool_thread_num64查询线程数,默认启动64个线程,后续查询请求动态创建线程
fragment_pool_queue_size1024单节点上能够处理的查询请求上限
enable_partitioned_hash_joinfalse使用PartitionHashJoin
enable_partitioned_aggregationtrue使用PartitionAggregation
enable_token_checktrueToken开启检验
enable_prefetchtrue查询提前预取
load_process_max_memory_limit_bytes107374182400单节点上所有的导入线程占据的内存上限,100GB
load_process_max_memory_limit_percent80单节点上所有的导入线程占据的内存上限比例,100GB
sync_tablet_metafalse存储引擎是否开sync保留到磁盘上。
thrift_rpc_timeout_ms5000Thrift超时的时长
txn_commit_rpc_timeout_ms10000Txn超时的时长
routine_load_thread_pool_size10例行导入的线程池数目
tablet_meta_checkpoint_min_new_rowsets_num10TabletMeta Checkpoint的最小Rowset数目
tablet_meta_checkpoint_min_interval_secs600TabletMeta Checkpoint线程轮询的时间间隔
default_rowset_typeALPHA存储引擎的格式,默认新ALPHA,后面会替换成BETA
brpc_max_body_size209715200BRPC最大的包容量,200MB
max_runnings_transactions2000存储引擎支持的最大事务数
tablet_map_shard_size1Tablet分组数
enable_bitmap_union_disk_format_with_setFalseBitmap新存储格式,可以优化bitmap_union性能

Broker配置项

参考 Broker load导入

系统参数

Linux Kernel

建议3.10以上的内核。

CPU

scaling governor用于控制CPU的能耗模式,默认是on-demand模式,使用performance能耗最高,性能也最好,StarRocks部署建议采用performance模式。

echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

内存

  • Overcommit

不建议使用Overcommit, 建议把 cat /proc/sys/vm/overcommit_memory 设成  1。

echo 1 | sudo tee /proc/sys/vm/overcommit_memory
  • Huge Pages

禁止transparent huge pages,这个会干扰内存分配器,导致性能下降。

echo 'madvise' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
  • Swappiness

关闭交换区,消除交换内存到虚拟内存时对性能的扰动。

echo 0 | sudo tee /proc/sys/vm/swappiness

磁盘

  • SATA

mq-deadline 调度算法会排序和合并 I/O 请求,适合SATA磁盘。

echo mq-deadline | sudo tee /sys/block/vdb/queue/scheduler
  • SSD/NVME

kyber调度算法适用于latency低的设备,例如NVME/SSD

echo kyber | sudo tee /sys/block/vdb/queue/scheduler

如果系统不支持kyber,建议使用none调度算法

echo none | sudo tee /sys/block/vdb/queue/scheduler

网络

请至少使用10 GB网络,1GB网络也能工作,但是会导致达不到预期性能。可以使用iperf测试系统带宽,确认是否是10GB网络。

文件系统

建议使用Ext4文件系统,可用相关命令进行查看挂载类型。

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vdb1      ext4     1008G  903G   55G  95% /home/disk1

其他系统配置

  • tcp abort on overflow
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
  • somaxconn
echo 1024 | sudo tee /proc/sys/net/core/somaxconn

系统资源

系统资源是指系统所能使用资源上限,配置在/etc/security/limits.conf,包括文件句柄、最大进程数、最大使用内存等。

  • 文件句柄

在部署的机器上运行ulimit -n 65535,把文件句柄设为65535。如果ulimit值重新登录后失效,尝试修改 /etc/ssh/sshd_config 中的 UsePAM yes ,然后重启sshd服务即可。

高并发配置

如果集群负载的并发度较高,建议添加以下配置

echo 120000 > /proc/sys/kernel/threads-max
echo 60000  > /proc/sys/vm/max_map_count
echo 200000  > /proc/sys/kernel/pid_max
  • max user processes

ulimit -u 40960