- StarRocks
- 产品简介
- 快速开始
- 表设计
- 数据导入
- 数据提取
- 使用StarRocks
- 管理手册
- 参考手册
- SQL参考
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE RESOURCE GROUP
- CREATE FILE
- DROP FILE
- INSTALL PLUGIN
- SHOW BACKENDS
- SHOW BROKER
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW PLUGINS
- SHOW TABLE STATUS
- SHOW FILE
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- ALTER RESOURCE
- BACKUP
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE AS SELECT
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- CREATE FUNCTION
- DROP DATABASE
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- DROP FUNCTION
- HLL
- RECOVER
- RESTORE
- SHOW RESOURCES
- SHOW FUNCTION
- TRUNCATE TABLE
- DML
- ALTER ROUTINE LOAD
- BROKER LOAD
- CANCEL LOAD
- CANCEL EXPORT
- DELETE
- EXPORT
- GROUP BY
- INSERT
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- CREATE ROUTINE LOAD
- SELECT
- SHOW ALTER
- SHOW BACKUP
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD
- SHOW ROUTINE LOAD TASK
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- 数据类型
- 辅助命令
- 函数参考
- 日期函数
- convert_tz
- curdate
- current_timestamp
- curtime
- datediff
- date_add
- date_format
- date_sub
- date_trunc
- day
- dayname
- dayofmonth
- dayofweek
- dayofyear
- from_days
- from_unixtime
- hour
- minute
- month
- monthname
- now
- second
- str_to_date
- timediff
- time_slice
- timestampadd
- timestampdiff
- to_date
- to_days
- unix_timestamp
- utc_timestamp
- week
- weekofyear
- year
- hours_diff
- minutes_diff
- months_diff
- seconds_diff
- weeks_diff
- years_diff
- quarter
- timestamp
- time_to_sec
- str2date
- microseconds_add
- microseconds_sub
- 加密函数
- 地理位置函数
- 字符串函数
- JSON 函数
- 模糊/正则匹配函数
- 工具函数
- 聚合函数
- Bitmap函数
- 数组函数
- bit函数
- cast函数
- hash函数
- 条件函数
- 百分位函数
- 数学函数
- 日期函数
- 系统变量
- 错误码
- 系统限制
- SQL参考
- 常见问题解答
- 性能测试
- Release Notes
编辑
管理内存
本文介绍如何管理并调优内存资源。
查看内存使用
您可以通过以下方法查看分析 BE 内存使用。
- 通过浏览器或 curl 命令访问 Metrics 接口分析内存使用。
Metrics 统计每 10 秒更新一次。
curl -XGET -s http://be_ip:8040/metrics | grep "^starrocks_be_.*_mem_bytes\|^starrocks_be_tcmalloc_bytes_in_use"
说明:
- 将以上
be_ip
改为 BE 节点实际的 IP 地址。- BE
webserver_port
默认为8040
。
对应指标的含义参考 内存分类。
- 通过浏览器或 curl 命令访问 mem_tracker 接口分析 BE 内存使用。
http://be_ip:8040/mem_tracker
说明:
- 将以上
be_ip
改为 BE 节点实际的 IP 地址。- BE
webserver_port
默认为8040
。
指标说明:
level
: MemTracker 为树型结构,第一级为 BE 使用总内存,第二级为分类内存使用。Label
: 标识内存分类,对应指标的含义参考 内存分类。Parent
: 父结点 Label。Limit
: 内存使用限制,-1
表示没有限制。Current Consumption
: 当前内存使用。Peak Consumption
: 峰值内存使用。通过浏览器或 curl 命令访问 TCmalloc 接口分析 BE 内存使用。
http://be_ip:8040/memz
说明:
- 将以上
be_ip
改为 BE 节点实际的 IP 地址。- BE
webserver_port
默认为8040
。
示例:
------------------------------------------------
MALLOC: 777276768 ( 741.3 MiB) Bytes in use by application
MALLOC: + 8851890176 ( 8441.8 MiB) Bytes in page heap freelist
MALLOC: + 143722232 ( 137.1 MiB) Bytes in central cache freelist
MALLOC: + 21869824 ( 20.9 MiB) Bytes in transfer cache freelist
MALLOC: + 832509608 ( 793.9 MiB) Bytes in thread cache freelists
MALLOC: + 58195968 ( 55.5 MiB) Bytes in malloc metadata
MALLOC: ------------
MALLOC: = 10685464576 (10190.5 MiB) Actual memory used (physical + swap)
MALLOC: + 25231564800 (24062.7 MiB) Bytes released to OS (aka unmapped)
MALLOC: ------------
MALLOC: = 35917029376 (34253.1 MiB) Virtual address space used
MALLOC:
MALLOC: 112388 Spans in use
MALLOC: 335 Thread heaps in use
MALLOC: 8192 Tcmalloc page size
------------------------------------------------
Call ReleaseFreeMemory() to release freelist memory to the OS (via madvise()).
Bytes released to the OS take up virtual address space but no physical memory.
指标说明:
Bytes in use by application
: BE 实际使用的内存。Bytes in page heap freelist
: BE 已不再使用,但是尚未归还给操作系统的内存。Actual memory used
: 操作系统监测到 BE 实际内存使用(BE 会预留一些空闲内存,不还给操作系统或是缓慢返还给操作系统)。Bytes released to OS
: BE 已设置为可回收状态,但是操作系统尚未回收的内存。
内存分类
StarRocks BE 中的内存分为以下几类。
标识 | Metric 名称 | 说明 | BE 相关配置 |
---|---|---|---|
process | starrocks_be_process_mem_bytes | BE 进程实际使用的内存(不包含预留的空闲内存)。 | mem_limit |
query_pool | starrocks_be_query_mem_bytes | BE 查询层使用总内存。 | |
load | starrocks_be_load_mem_bytes | 导入使用的总内存。 | load_process_max_memory_limit_bytes, load_process_max_memory_limit_percent |
table_meta | starrocks_be_tablet_meta_mem_bytes | 元数据总内存。 | |
compaction | starrocks_be_compaction_mem_bytes | 版本合并总内存。 | compaction_max_memory_limit, compaction_max_memory_limit_percent |
column_pool | starrocks_be_column_pool_mem_bytes | column pool 内存池,用于加速存储层数据读取的 Column Cache。 | |
page_cache | starrocks_be_storage_page_cache_mem_bytes | BE 存储层 page 缓存。 | disable_storage_page_cache, storage_page_cache_limit |
chunk_allocator | starrocks_be_chunk_allocator_mem_bytes | CPU per core 缓存,用于加速小块内存申请的 Cache。 | chunk_reserved_bytes_limit |
consistency | starrocks_be_consistency_mem_bytes | 定期一致性校验使用的内存。 | consistency_max_memory_limit_percent, consistency_max_memory_limit |
schema_change | starrocks_be_schema_change_mem_bytes | Schema Change 任务使用的总内存。 | memory_limitation_per_thread_for_schema_change |
clone | starrocks_be_clone_mem_bytes | Tablet Clone 任务使用的总内存。 | |
update | starrocks_be_update_mem_bytes | 主键模型使用的总内存。 |
内存相关配置项
BE 配置项
名称 | 默认值 | 说明 |
---|---|---|
mem_limit | 90% | BE 进程内存上限,默认硬上限为 BE 所在机器内存的 90%, 软上限为 BE 所在机器内存的 80%。如果 BE 为独立部署,则无需配置,如果 BE 与其它占用内存较多的服务混合部署,则需要合理配置。 |
load_process_max_memory_limit_bytes | 107374182400 | 导入内存上限, 取 mem_limit * load_process_max_memory_limit_percent / 100 和 load_process_max_memory_limit_bytes 中较小的值。如导入内存到达限制,则会触发刷盘和反压逻辑。 |
load_process_max_memory_limit_percent | 30 | 导入内存上限,取 mem_limit * load_process_max_memory_limit_percent / 100 和 load_process_max_memory_limit_bytes 中较小的值,导入内存到达限制,会触发刷盘和反压逻辑。 |
compaction_max_memory_limit | -1 | Compaction 内存上限,取 mem_limit * compaction_max_memory_limit_percent / 100 和 compaction_max_memory_limit 中较小的值,-1 表示没有限制。当前不建议修改默认配置。Compaction 内存到达限制,会导致 Compaction 任务失败。 |
compaction_max_memory_limit_percent | 100 | Compaction 内存上限,取 mem_limit * compaction_max_memory_limit_percent / 100 和 compaction_max_memory_limit 中较小的值,-1 表示没有限制。当前不建议修改默认配置。Compaction 内存到达限制,会导致 Compaction 任务失败。 |
disable_storage_page_cache | true | 是否禁用 BE 存储层 page 缓存。该配置项与 storage_page_cache_limit 配合使用,在内存资源充足和有大数据量 Scan 的场景中启用能够加速查询性能。 |
storage_page_cache_limit | 0 | BE 存储层 page 缓存可以使用的内存上限。 |
chunk_reserved_bytes_limit | 2147483648 | 用于加速小块内存分配的 Cache,默认上限为 2GB。您可以在内存资源充足的情况下打开。 |
consistency_max_memory_limit_percent | 20 | 一致性校验任务使用的内存上限,取 mem_limit * consistency_max_memory_limit_percent / 100 和 consistency_max_memory_limit 中较小的值。内存使用超限,会导致一致性校验任务失败。 |
consistency_max_memory_limit | 10G | 一致性校验任务使用的内存上限,取 mem_limit * consistency_max_memory_limit_percent / 100 和 consistency_max_memory_limit 中较小的值。内存使用超限,会导致一致性校验任务失败。 |
memory_limitation_per_thread_for_schema_change | 2 | 单个 Schema Change 任务的内存使用上限,内存使用超限,会导致 Schema Change 任务失败。 |
tc_use_memory_min | 10737418240 | TCmalloc 最小预留内存,小于这个值,StarRocks 不会将空闲内存返还给操作系统。 |
Session 变量
名称 | 默认值 | 说明 |
---|---|---|
exec_mem_limit | 2147483648 | 单个 Instance 的内存限制,单位是 Byte。一个查询可以使用的内存为 Instance 数量 * exec_mem_limit。只有在配置项 query_mem_limit 为 0 时,该配置项生效。 |
load_mem_limit | 0 | 单个导入任务的内存限制,单位是 Byte。如果此配置项被设置为 0,那么系统会使用 exec_mem_limit 来限制内存。 |
query_mem_limit | 0 | 单个查询的内存限制,单位是 Byte。如果此配置项被设置为 0,那么系统会使用 exec_mem_limit 来限制内存。建议设置为 17179869184(16GB)以上。 |