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小一点,内存太少了
硬件上能够加大内存最好,再去看看TOP SQL
对的,执行sql超过内存使用率80%就会被kill掉,我的内存是32G的,这应该足够了吧,有6台单独的tidb-server
内存够不够要看你sql干了点啥,要是笛卡尔积,多少内存都不够折腾的。
1 个赞
加点内存吧。
或者内存小就关闭: 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的很清晰了