查询系统表PROCESSLIST发现很多update和commit操作的mem内存使用异常的大

【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.0
【复现路径】对表数据进行update操作
【遇到的问题:问题现象及影响】系统表PROCESSLIST发现很多update和commit操作的mem内存使用异常的大,然后两个tibd节点的cpu使用率达到90%以上,整个集群连接异常,简单地查询速度极慢

【资源配置】30台服务器的一个tidb集群


图中的xxl_job表实际就两条数据,理论上update修改数据不会消耗这么大的内存

这个mem列没啥用,不要当做什么参考价值

低版本bug,你服务器都没这么多内存。4.0太老了,升级吧

高版本也这样的,别看这个值了

大佬们快往上反馈下,不是个例了

提issue吧,把复现步骤贴上去

看着是个老问题,有人提过issue了
mem field in information_schema.processlist display abnormal · Issue #18588 · pingcap/tidb · GitHub

1 个赞

Grafana 监控图和机器的内存使用量如何?

这个SQL语句的 explain 执行计划也麻烦贴一下,方便分析

那个值一看就很假

没有参考价值,可以忽略


集群tidb两个节点cpu使用率都达90以上,jdbc连接tidb集群异常,后续这个mem异常的kill恢复后集群就正常了


集群tidb两个节点cpu使用率都达90以上,后台jdbc连接tidb集群异常,然后我查的系统表就发现了这个异常现象,后续这个mem异常的kill恢复后集群就正常了

对,整个集群也没这么多的内存的。 但是集群状态当时异常了一两个小时,jdbc连接集群都连不上,简单查询也很慢很慢,然后查系统表查到这个mem异常问题的,这个mem异常问题恢复后,集群也跟着恢复了 ,所以想问问这个mem异常大是怎么导致的


集群tidb两个节点cpu使用率都达90以上,后台jdbc连接tidb集群异常,然后我查的系统表就发现了这个mem异常大的现象。 意思这两者并没有关系?

升级吧,太老了

+1 先升上来再说吧,这个版本已经太老了

确认一下对应的SQL语句的 explain 执行计划,自己tidb日志

这里面mem应该体现的是不是当前这个sql占用的内存量,而是你这个链接累计的内存占用量,你现在是一条update sql,但是可能前面是一个很大的查询sql,所以累计内存占用的多,但是这个不代表当前这个连接还占用内存很多。