tidb server占用内存高问题排查

tidb-server占用内存很高,不知道怎么排查,设置的内存限制为80%,有时候内存使用率还是会到90%,并且会有很多sql执行失败,请问要怎么排查
这是火焰图

补充一个图

copr占比是5.59g。这从慢查询界面里面应该能看到占用内存高的sql才对。

执行失败的原因是什么?不会就是因为内存占用高所以被kill掉的吧。

https://docs.pingcap.com/zh/tidb/stable/configure-memory-usage#如何配置-tidb-server-实例使用内存的阈值

继续调小70%,然后设置tidb_mem_quota_query小一点,内存太少了

我觉得设置 tidb_mem_quota_query好一点,这样起码其他的sql不受影响,先把内存占用多的sql给找出来

硬件上能够加大内存最好,再去看看TOP SQL

对的,执行sql超过内存使用率80%就会被kill掉,我的内存是32G的,这应该足够了吧,有6台单独的tidb-server

内存够不够要看你sql干了点啥,要是笛卡尔积,多少内存都不够折腾的。

1 个赞


我有2台是新增的,2台新增的占用内存比较小

加点内存吧。
或者内存小就关闭: tidb_enable_gogc_tuner

个人建议,你可以看下tikv-client.copr-cache.capacity-mb这配置设置了多少,自身测试过,这个参数对tidbserver内存增长影响很大

查看慢日志,找出哪些消耗时间长的SQL语句,另外建议调低tidb_mem_quota_query ,来限制单个SQL查询的内存使用量。

https://docs.pingcap.com/zh/tidb/stable/configure-memory-usage#tidb-server-内存占用过高时的报警 可以去record目录下找下当时跑的sql,再进行下一步分析。

内存 内存 内存

pprof的很清晰了