tidb_server、pd经常内存99.9%

tidb_server与pd装在一台机器上,经常出现内存99.5%以上导致机器直接卡死,有解决方法吗

机器内存大小、mem_qutoa_query设置是多少? 有个resource_control: 参数可以设置memory 大小

机器是32G内存,mem_qutoa_query没有设置

能查到是哪些SQL占用内存大吗

可以用 pprofile看下tidb的内存占用,需要安装go
curl -G 10.161.67.82:10080/debug/pprof/heap > db.heap.prof
然后使用go tool pprof db.heap.prof --> top命令看看

tidb集群 是用tiup安装的,要修改mem_qutoa_query的话,是不是要用tiup-edit命令,集群 要重启吗

好像是要reload,只reload -R tidb 就行

mem_qutoa_query这个参数设置了之后,超过这个限制的SQL是不是直接 就报错了

[root@prod-sh1-tidb-pd3-0002 ~]# go tool pprof db.heap.prof
File: tidb-server
Build ID: f802f4591b52719a3d3659c256db53dde27d2c61
Type: inuse_space
Time: Aug 2, 2022 at 5:07pm (CST)
Entering interactive mode (type “help” for commands, “o” for options)
(pprof) top
Showing nodes accounting for 1938.98MB, 75.05% of 2583.60MB total
Dropped 556 nodes (cum <= 12.92MB)
Showing top 10 nodes out of 129
flat flat% sum% cum cum%
861.70MB 33.35% 33.35% 861.70MB 33.35% github.com/pingcap/tidb/store/copr.(*copIteratorWorker).handleCopResponse
264.80MB 10.25% 43.60% 264.80MB 10.25% google.golang.org/grpc.(*parser).recvMsg
193.04MB 7.47% 51.07% 193.04MB 7.47% github.com/pingcap/tidb/store/copr.coprCacheBuildKey
163.21MB 6.32% 57.39% 163.21MB 6.32% github.com/pingcap/tidb/statistics.NewCMSketch
113.03MB 4.38% 61.77% 113.03MB 4.38% reflect.New
100.97MB 3.91% 65.67% 130.97MB 5.07% github.com/pingcap/tidb/executor.(*baseHashAggWorker).getPartialResult
86.23MB 3.34% 69.01% 98.78MB 3.82% github.com/pingcap/tidb/util/chunk.(*Column).AppendBytes
66.09MB 2.56% 71.57% 66.09MB 2.56% bytes.makeSlice
45.67MB 1.77% 73.34% 45.67MB 1.77% github.com/pingcap/tidb/util/chunk.newVarLenColumn
44.23MB 1.71% 75.05% 44.23MB 1.71% github.com/pingcap/tidb/kv.(*HandleMap).Set
(pprof)

这个能看出什么吗

[root@prod-sh1-tidb-pd3-0002 ~]# free -m
total used free shared buff/cache available
Mem: 32009 30489 669 4 850 1165
Swap: 31999 3846 28153

你把profile用go 和 graphviz 看下 有个页面比较详细 ,可以在windows里装下, 一般情况SQL执行的内存超过mem_quota后会被kill

这几个参数建不建议设置啊

先调整tidb_mem_quota_query看看吧

tidb_mem_quota_query这个值默认是1G,意思是不是超过1G,SQL就被 kill 了

这个是这条SQL执行时占用的内存大小吧,好像没有补kill

[performance]
server-memory-quota = 34359738368

server-memory-quota这个参数能配置在 tiup cluster edit-config 里面吗