【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.2
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
tidb内存一直在缓慢增加,并且只有一个tidb内存高,其他tidb内存都很低,各tidb通过lvs进行负载均衡,连接数是均衡的
【资源配置】
【附件:截图/日志/监控】
tidb内存监控
高内存的节点,内存分布情况
【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.2
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
tidb内存一直在缓慢增加,并且只有一个tidb内存高,其他tidb内存都很低,各tidb通过lvs进行负载均衡,连接数是均衡的
【资源配置】
【附件:截图/日志/监控】
tidb内存监控
比较老的版本了,一直没升级么…
tidb 长期内存不释放的原因很多,最大的一个原因就是慢查询,可以通过资源定位的方式获取到这些查询,然后通过优化的方式来解决。
6.X 才对 OOM 这块的优化做好了一些…
看 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命令查看有啥占的多
看着还是跟SQL有关,看看慢SQL呢
慢日志有,各节点也都有,其他节点的慢sql不比这个节点少,可是就这个节点的内存一直居高不下
内存泄漏
排查发现大内存的那个节点是stats owner节点,为了避免影响业务,我们将该节点重启后,新的stats owner又出现内存持续增长,感觉像是内存泄漏
同样的困扰。
版本有点老,考虑升级下
pprof开启然后分析一下,看什么地方有泄露