【TiDB 使用环境】测试环境
【TiDB 版本】8.5.1
【部署方式】arm物理机
【操作系统/CPU 架构/芯片详情】麒麟v10sp3系统/飞腾2000
【机器部署详情】CPU32线程/内存128G/磁盘4T,给tiflash分配了20G内存
【集群数据量】总量100条测试数据
【集群节点数】单节点
【问题复现路径】并发启动的sql大概有600个,数据库实际没多少数据
【遇到的问题:问题现象及影响】tiflash报错rss much larger than limit,具体报错信息见下图,导致数据库任何查询都无法使用,tifalsh内存改成40G也报这个错。top看tiflash实际RES内存占用不到10G,相关库表不启用tiflash则并发sql没问题。此现象在ARM环境毕现,相同的程序使用同级别的x86服务器上没问题。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
tiflash 安装了几台机器几个节点,配置是什么样的?
看上去是资源不够导致的
提交问题前我看到了这个文章,他是两个节点,他的方法就是加大tiflash内存分配,我从20G加到40G也报一样的错,我的x86服务器一样的程序和配置不报错,只有arm的环境必现
只装了一个节点,跟tidb、tikv、pd都在同一台arm物理机上,是飞腾2000cpu,32线程,128G内存,4T硬盘,给tifalsh分配的20G内存,给tifalsh调整到40G内存仍然报错,类似的配置在x86架构的服务器上相同压力从来不报错
修改 TiFlash 的配置文件(tiflash.toml),适配 ARM 架构的内存管理特性:
toml
# 核心内存限制配置(根据ARM节点物理内存调整)
[memory]
# 全局内存上限(建议设为物理内存的60%-70%,ARM需预留更多系统内存)
limit = 40GB # 64G物理内存建议40GB,避免挤占系统内存
# 内存超过limit时的触发阈值(默认90%,ARM下调至85%)
rss_over_limit_threshold = 0.85
# 内存超过阈值时的处理策略(kill表示终止超限查询,避免OOM)
rss_over_limit_action = "kill"