tikv内存泄漏

【TiDB 使用环境】测试
【TiDB 版本】v6.5.0
【操作系统】ubuntu
【部署方式】机器部署(k8s集群)
【集群数据量】1000万每天
【集群节点数】3
【问题复现路径】数据量增大时发生每天重启,导致部分程序客户端出现断连或者超时现象
【遇到的问题:问题现象及影响】


每天入库数据量在1000万+,相比与小数据量的情况,发现tikv节点每天重启,上图是tikv的内存利用率,发现重启时间点和内存达到最高点时间点吻合,怀疑存在内存泄漏。

【资源配置】

【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
日志如下,-p的是重启前日志
log.zip (11.0 MB)

storage.block-cache.capacity 设置下tikv内存

2 个赞

tikv有和其他组件混布吗,如果独立部署应该不至于被OOM

升级下小版本,会有一些问题的修复,升级完成之后会有明显改善了

在相同命名空间下只有tidb,同个服务器上还有部署milvs数据库,还有s3等其他组件

学习下

请问推荐版本是多少,当前使用的是6.5.0

看看8.x的长期版本

好的我试试8.x版本

k8s安装的tidb集群,一定要注意,SHOW config WHERE NAME LIKE ‘%storage.block-cache.capacity%’;—这个tikv参数不指定的话,是根据你的宿主机物理内存来自动分配的,
SET config tikv storage.block-cache.capacity= ‘9GB’;
一般建议是你先预估你的k8s节点上有几个pod,例如看截图,你的大概有10个,如果你的宿主机物理内存有200g,这个参数就设置为200/10*0.45,约9G即可,每个tikv的pod最大内存能占用到此参数的2.25倍

2 个赞

特别关注以下几个关键指标, ikv_thread_mem_profile 显示各个线程的内存使用情况,process_resident_memory_bytes 进程占用的物理内存大小。ikv_grpc_msg_duration_seconds_bucket{type=“kv_prewrite”} 和其他类似的gRPC请求延迟指标,以检测是否有异常增加的延迟可能暗示内存问题。

1 个赞

感谢,我试试


测试之后,升级8.x之后还是会内存利用率增长,但是修改配置之后就稳定了,目前观察一天没有出现pd重启现象,感谢

1 个赞

请教下,在修改后一天左右出现tikv组件crash报错,组件自动重启后看内存利用率又变为自动增长的,在26号凌晨0点52三个tikv组件都重启了,已重启多次看不到是否是crash,这个时间点后看配置恢复成不指定的情况了,有没有设置全局配置可以持续生效。另外crash的原因和这个设置有关吗?


上图内存利用率的时间轴为utc时间。
crash报错日志如下

basic-tikv-1-p.txt (3.0 MB)

SET config tikv storage.block-cache.capacity = ‘9GB’;
这个不是持久生效的,持久生效,需要你修改配置文件,修改方式参照这里
https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/modify-tidb-configuration/#修改-tidbtikv-等组件配置

1 个赞

感谢我试试


使用修改tc的方式可以长期生效
kubectl -n tidb edit tc

新增:
spec:
tikv:
config: |
[storage] #新增
[storage.block-cache] #新增
capacity = “9GB” #新增

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。