作者:追逐-晨曦 | 来源:互联网 | 2023-09-06 04:55
当TiDB发生内存使用率高发生omm的时候大部分时候是慢sql导致这时候可以根据慢查询定为sql后进行优化,当tidb内存使用率很高却不omm而且有一些慢sql的时候怎么分析,个人
作者:TiDBer_guanguanglei
原文来源:https://tidb.net/blog/cbbac8b1
tidb版本5.2.3
布置方式云主机
当TiDB发生内存使用率高发生omm的时候大部分时候是慢sql导致这时候可以根据慢查询定为sql后进行优化,当tidb内存使用率很高却不omm而且有一些慢sql的时候怎么分析,个人建议使用go的pprof工具进行分析。
case 1 
tidb内存使用率高,测试中经常出现omm优化sql后效果不明显
工具流程如下:
--获取debug信息
curl http://127.0.0.1:10080/debug/zip --output tidb_debug.zip
unzip tidb_debug.zip
--解压后文件中heap是内存堆栈的分析
[tidb\@db1 ]$ ll
total 712
-rw-rw-r-- 1 tidb tidb 4844 Dec 31 1979 config
-rw-rw-r-- 1 tidb tidb 372768 Dec 31 1979 goroutine
-rw-rw-r-- 1 tidb tidb 284367 Dec 31 1979 heap
-rw-rw-r-- 1 tidb tidb 13176 Dec 31 1979 mutex
-rw-rw-r-- 1 tidb tidb 34916 Dec 31 1979 profile
-rw-rw-r-- 1 tidb tidb 308 Dec 31 1979 version
--可以在windows打印成html查看
go tool pprof -http :8081 heap
图片中占用内存最多的为hhtp,经确认为bug https://github.com/pingcap/tidb/pull/30970,因为业务特殊每个database中有上万张表每张表有三百多个字段导致dashboard收集流量信息的时候占用内存太多,临时解决办法关闭dashboard流量图。
case 2
tidb_analyze_version=2的实验特性导致内存使用率高tidb发生oom,解决办法tidb_analyze_version=1
case 3
看名字知道跟慢日志有关这个是已知问题,https://github.com/pingcap/tidb/issues/32656