TiDB内存一直在缓慢增涨

【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.2
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
tidb内存一直在缓慢增加,并且只有一个tidb内存高,其他tidb内存都很低,各tidb通过lvs进行负载均衡,连接数是均衡的
【资源配置】
【附件:截图/日志/监控】
tidb内存监控


高内存的节点,内存分布情况

比较老的版本了,一直没升级么…

tidb 长期内存不释放的原因很多,最大的一个原因就是慢查询,可以通过资源定位的方式获取到这些查询,然后通过优化的方式来解决。

6.X 才对 OOM 这块的优化做好了一些…

看 goroutine count 监控是不是也是一样增长的


goroutine count没有增长,而且各节点都差不多

能从内存分布看出是慢查询导致的吗?

看下 query sumary - cps by instance kv request - kv reques OPS 监控 ,是不是找个节点本身的请求多

我之前在5版本遇到过,我一直怀疑是dashboard查慢sql这个功能导致的。查的范围越大,某个tidb节点使用的内存越多,偶尔还会oom。可以验证一下看看,

这个看了一下,这个节点和其他节点的请求都差不多

curl -G tidb_ip:port/debug/pprof/heap > heap.profile
然后使用go tool pprof db.heap.prof → top命令查看有啥占的多

1 个赞

这个结果已经贴出来了

看着还是跟SQL有关,看看慢SQL呢

慢日志有,各节点也都有,其他节点的慢sql不比这个节点少,可是就这个节点的内存一直居高不下

内存泄漏

排查发现大内存的那个节点是stats owner节点,为了避免影响业务,我们将该节点重启后,新的stats owner又出现内存持续增长,感觉像是内存泄漏

同样的困扰。

版本有点老,考虑升级下

pprof开启然后分析一下,看什么地方有泄露