tiflash 集群内存爆,有没有办法可以限制内存

【 TiDB 使用环境】生产环境
【 TiDB 版本】8.1
【复现路径】tiflash 运行即可复现。
【遇到的问题: tiflash 运行一段时间后,突然内存爆满,把机器卡死。重启后又立马把内存占用到百分之九十多,导致机器卡死。目前生产环境tiflash集群无法使用。调整了这三个参数后(profiles.default.max_memory_usage:
profiles.default.max_memory_usage_for_all_queries:
delta_index_cache_size:),没有任何效果。启动即死】。
请问有么有什么办法可以限制住总体内存的使用???
【资源配置:三太都是 8 核32G。磁盘空间占用还不到 50%

看看慢查询中的语句,应该是有大量使用tiflash引擎查询的语句。你这个tiflash没有混合部署吧。还有这个tiflash是几个副本,
要是保留一台资源,一个副本叠加到这一台上面,24核心96G。试试呢。

独立部署的。查了没有任何 执行的sql。每次重启不到 1 分钟立马卡死。
可以确定的是它应该是加载预热数据造成的。如何限制这个预热数据的范围?

加资源肯定能解决。加大成本的都属于硬伤哈

每张表都是 2 个副本

日志是什么信息?能否一个副本,将三个tifalsh的资源合并到一台上面。你这个tiflash的cpu8核有点小。

正打算试着都只留一个副本。但是不知道副本减少了会不会性能大大的打折扣呢?

你试试,我这边都是配置的一个tiflash,如果需要多个tifalsh,就得需要优化sql了

是不是新节点,在同步数据啊?


tiflash_mem_quota_query_per_node,试下这个参数

首先起不来的问题,应该是有些查询在tiflash一启动的时候就会打爆tiflash。
这个需要看看慢sql里面,是那些sql在走tiflash。

实在不行,先把tiflash从存储引擎里面去掉。让tiflash起来再说。看下面这个文档。

https://docs.pingcap.com/zh/tidb/stable/use-tidb-to-read-tiflash#engine-隔离

然后从根本上,需要确定一下,是单个sql内存大,还是并发高?

如果是单个sql内存消耗大,考虑落盘。

https://docs.pingcap.com/zh/tidb/v7.5/tiflash-spill-disk#tiflash-数据落盘

如果是并发高,考虑使用查询结果物化,把聚合结果放到tikv里面,定时刷新,结果从tikv上取。

https://docs.pingcap.com/zh/tidb/stable/tiflash-results-materialization#tiflash-查询结果物化

2 个赞

起不来。是不只能卸了 tiflash 后重建了?

副本设置成 0 后还是起不来。估计是原来数据还在的原因

起不来,强制剔除吧,tikv中在同步到tiflash,得强制下线

现在只能这么干。tiflashs 是什么机制哈。启动的时候。要吃那么多内存。磁盘数据也就 60 多个 G.

tiflash 是列式存储,你配置表或者库后,会从tikv同步数据到tiflash,一般出现问题就是查询导致的tiflash出现异常。你数据同步都完成了么。

同步的表我没敢搞完。怕又死了启不来。只同步了一部分表。。
有个疑问。就是tiflash存储的表,在kv里,每天晚上都在某一个时间里同时更新上千万条数据,然后它同时还会自动同步到tiflash上。那会不会的把tiflash的内存飙升?因为之前用的好好的,前晚跑任务后tiflash内存就爆了,从此启不来。一启动就内存不够了

有没有有效的参数可以控制查询导致tiflash内存不足的。
然后如果我还把之前的表都同步到 tiflash 上了。有一天如果服务重启。是不是也跟现在一样启动不起来?

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面

截图看一下

kv千万级别数据更新,应该也会很慢的,这个可能就是造成tiflash崩溃的原因。千万级别的表更新能否更换思路呢,你是同时update么,还是分条件执行?