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