一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产环境
【TiDB 版本】7.5.1
【部署方式】虚机,docker容器部署无备份
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】3个节点,tidb、pd、tikv各一个
【问题复现路径,倒入数据过多,内存溢出,后无法启动
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
Leonard
(Hacker Byb Hr4 Nu)
2
是不是tikv的数据盘满了,container映射的那个目录
个人练习生
(Ti D Ber O Lb6d0s K)
5
导入数据时 RocksDB write buffer、block cache 占用过高,把容器内存打满。
不需要修复文件,只改配置就能启动
lllzd
(时光旅行者)
8
看了日志,因为你一次性导入过多数据导致内存资源耗尽,导致内存不足溢出。
wbslxw
(Ti D Ber Cl S0j Eng)
9
批量导入数据时,RocksDB 的 write buffer、block cache 内存参数默认值过高,超出 Docker 容器内存限额,触发 OOM 杀死 TiKV 进程,进程无法自启。
kang
11
OOM导致无法启动,先检查内存配置和tidb_mem_quota_query设置。如果节点起不来可以调整配置文件减小内存限制。
PD 调度先用 pd-ctl 看 scheduler/store/config,确认 limit 和 store score,必要时手动加/删 scheduler。
一只大芒果
(Ti D Ber L B8j9nt J)
16
之前导入数据失败是因为,节点磁盘不够,导致失败。
后来把PD节点的磁盘增加,就好了。
zhanggame1
(Ti D Ber G I13ecx U)
17
你这是混合部署没有限制内存的问题
tikv和tidb需要限制内存
是的 如果在一台物理机上混合部署(比如同时部署 TiDB、TiKV、PD 等多个组件),且没有对各个组件的内存上限进行严格限制,它们默认都会去“抢占”系统内存,最终导致整台机器内存耗尽,触发操作系统的 OOM(Out Of Memory)机制,把进程强行杀掉。
你这是批量导入撑爆 TiKV 内存触发 OOM,先调小 block-cache、write-buffer 参数再启动容器;后续分批导数据,容器和组件都要限制内存上限。
Loving
(Loving)
21
优化导入的SQL吧,这个不仅TIDB,所有DB遇到都会爆,需要严格规划好批次导入的大小的
block-cache 默认取宿主机内存 45%,容器里要显式调小。