说明 | 计算规则 | 成效 |
BE中缓存内存设置,有两个参数query cache max size和query cache elasticity size两部分组成(单位MB),内存超过query cache max size + cache elasticity size会开始清理,并把内存控制到query cache max size以下可以根据BE节点数量,节点内存大小,和缓存命中率来设置这两个参数。计算方法: 假如缓存10000个Query,每个Querv缓存1000行,每行是128个字节,分布在10台BE上,则每个BE需要约128M内存(10000 1000 128/10)。 | 计算方法: 假如缓存10000个Query,每个Querv缓存1000行,每行是128个字节,分布在10台BE上,则每个BE需要约128M内存(10000 1000 128/10)。 | 跑批内存平稳在5G内存左右 |
chunk_reserved_bytes_limit 描述:Chunk Allocator的reserved bytes 限制,通常被设置为 mem_limit 的百分比。默认单位字节,值必须是2的倍数,且必须大于0,如果大于物理内存,将被设置为物理内存大小。增加这个变量可以提高性能,但是会获得更多其他模块无法使用的空闲内存。 mem_limit:限制 BE 进程使用服务器最大内存百分比。用于防止 BE 内存挤占太多的机器内存,该参数必须大于 0,当百分大于 100% 之后,该值会默认为 100%。默认值:90% chunk_reserved_bytes_limit在不设置情况下使用mem_limit的配置。设置了该参数则使用当前设置参数。 | 按照上边参数进行计算:设置百分比进行数据同步可使用内存。 | 跑批完成以后,内存快速下降稳定定内存在3G左右 |
描述:buffer pool 之中最大的可分配内存 BE 缓存池最大的内存可用量,buffer pool 是 BE 新的内存管理结构,通过 buffer page 来进行内存管理,并能够实现数据的落盘。并发的所有查询的内存申请都会通过 buffer pool 来申请。当前 buffer pool 仅作用在AggregationNode与ExchangeNode。 | 降低缓存池的内存释放到可用内存。建议设置2% | |
描述:缓存存储页大小 开启 PageCache 后,StarRocks 会缓存最近扫描过的数据,对于查询重复性高的场景,会大幅提升查询效率。true 表示不开启。该配置项与 storage_page_cache_limit 配合使用,在内存资源充足和有大数据量 Scan 的场景中启用能够加速查询性能。storage_page_cache_limit BE 存储层 page 缓存可以使用的内存上限。 默认值:20% | 查询缓存减少,使用可用内存减少缓存,达到快速释放。建议设置4% | |
线程池中最大线程数量的最大值 max_cumu_compaction_threads = 60 线程池中线程闲置的最大值 max_base_compaction_threads = 2 | 线程池数量设置2,保证线程池持续有,但是不占用没有必要内存 | |
在 free 函数的最先处理部分,首先是检查释放块是否页对齐及前后堆块的释放情况,便优先放入 tcache 结构中。 内存申请: 在内存分配的 malloc 函数中有多处,会将内存块移入 tcache 中。 (1)首先,申请的内存块符合 fastbin 大小时并且找到在 fastbin 内找到可用的空闲块时,会把该 fastbin 链上的其他内存块放入 tcache 中。 (2)其次,申请的内存块符合 smallbin 大小时并且找到在 smallbin 内找到可用的空闲块时,会把该 smallbin 链上的其他内存块放入 tcache 中。 (3)当在 unsorted bin 链上循环处理时,当找到大小合适的链时,并不直接返回,而是先放到 tcache 中,继续处理。 | 直接使用物理内存, 减少内存开销则选择不实用tcache的缓存 |
doris内存过高优化
原创
©著作权归作者所有:来自51CTO博客作者龙虎纷争的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
mongoTemplate 根据多个id查询mongodb 数据库 字段 正则表达式 运算符