本文为您介绍StarRocks BE(Backend)中内存使用分类、内存配置以及如何查看内存使用。
内存分类
您可以在E-MapReduce控制台目标集群的集群服务页面,STARROCKS服务的配置页面的be.conf页签,新增或修改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独立部署的话,不需要配置,如果是和其它占用内存比较多的服务混合部署的话,要合理配置。 |
|
load_process_max_memory_limit_bytes |
107374182400 |
分别表示导入最大可用内存上限和最大可用内存百分比上限。 系统会在 如果导入内存到达限制,则会触发刷盘和反压逻辑。 |
|
load_process_max_memory_limit_percent |
30 |
|
|
compaction_max_memory_limit |
-1 |
分别表示Compaction内存上限和内存百分比上限。 系统会在 如果Compaction内存到达限制,则会导致Compaction任务失败。 |
|
compaction_max_memory_limit_percent |
100 |
|
|
disable_storage_page_cache |
true |
是否禁用BE存储层page缓存,和storage_page_cache_limit配合使用,在内存资源充足和有大数据量查询的场景中可以打开,能够加速查询性能。 |
|
storage_page_cache_limit |
0 |
BE存储层page缓存可以使用的内存上限。 |
|
chunk_reserved_bytes_limit |
2147483648 |
用于加速小块内存分配的Cache,默认上限为2147483648(2 GB),在内存资源充足的情况下可以考虑打开。 |
|
consistency_max_memory_limit |
10G |
一致性校验任务使用的内存上限和内存上限百分比。 系统会在 如果内存使用超限,则会导致任务失败。 |
|
consistency_max_memory_limit_percent |
20 |
|
|
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内存限制。 |
|
load_mem_limit |
0 |
单个导入任务的内存限制。 默认为0,即表示不使用该变量,而使用exec_mem_limit作为内存限制。 |
查看内存使用
您可以通过以下两种方法分析BE内存使用情况:
方式一:通过Metrics接口分析BE内存使用
Metrics统计每10秒更新一次。通过curl访问示例如下。
# BE webserver_port默认是8040。
curl -XGET -s http://BE_IP:8040/metrics | grep "^starrocks_be_.*_mem_bytes\|^starrocks_be_tcmalloc_bytes_in_use"
对应的指标含义请参见内存分类。
方式二:通过mem_tracker接口分析BE内存使用
您可以通过浏览器或curl访问。本示例通过浏览器访问。
# BE webserver_port默认是8040。
http://be_ip:8040/mem_tracker
访问情况如下图所示。
各参数含义如下:
-
level:MemTracker是一个树型结构,第一级是BE使用总内存,第二级是分类内存使用。
-
Label:标识内存分类,对应的指标含义请参见内存分类。
-
Parent:父结点Label。
-
Limit:内存使用限制,none表示没有限制。
-
Current Consumption:当前内存使用。
-
Peak Consumption:峰值内存使用。