6.1.2

【 TiDB 使用环境】测试
【 TiDB 版本】v6.1.2
【复现路径】
【遇到的问题:问题现象及影响】tidb OOM,合并部署有pd组件,drainer发生重启,出现如下日志
【资源配置】
【附件:截图/日志/监控】
drainer.log出现如下
[ERROR] [server.go:242] [“send heartbeat failed”] [error=“context deadline exceeded”] [errorVerbose=“context deadline exceeded\ngithub.com/pingcap/errors.AddStack\n\t/root/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20211224045212-9687c2b0f87c/errors.go:174\ngithub.com/pingcap/errors.Trace\n\t/root/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20211224045212-9687c2b0f87c/juju_adaptor.go:15\ngithub.com/pingcap/tidb-binlog/pkg/etcd.(*Client).Get\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/pkg/etcd/etcd.go:96\ngithub.com/pingcap/tidb-binlog/pkg/node.(*EtcdRegistry).checkNodeExists\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/pkg/node/registry.go:104\ngithub.com/pingcap/tidb-binlog/pkg/node.(*EtcdRegistry).UpdateNode\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/pkg/node/registry.go:91\ngithub.com/pingcap/tidb-binlog/drainer.(*Server).updateStatus\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/drainer/server.go:441\ngithub.com/pingcap/tidb-binlog/drainer.(*Server).heartbeat\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/drainer/server.go:240\ngithub.com/pingcap/tidb-binlog/drainer.(*Server).Start.func1\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/drainer/server.go:272\ngithub.com/pingcap/tidb-binlog/drainer.(*taskGroup).start.func1\n\t/var/lib/docker/jenkins/workspace/build-common@5/go/src/github.com/pingcap/tidb-binlog/drainer/util.go:81\nruntime.goexit\n\t/usr/local/go1.18.5/src/runtime/asm_arm64.s:1263”]

请问各位大佬们,drainer是什么原因导致的重启,查看网络没有任何问题,ping图都是正常的。

看下oom的时间段的sql内存使用情况,大概率是慢sql引起的

可以在 tidb.log 中 grep “expensive_query” ,该 log 会记录运行超时、或使用内存超过阈值的 SQL。
先把tidb内存oom问题找到再说。
或者先设置为单条 SQL 内存阈值默认值为 4GB ,可通过 tidb_mem_quota_query 系统变量进行设置,保证tidb服务不要异常

tidb确定了是oom,sql找到了,想知道的是drainer重启原因,我修改了下说明

tidb server OOM重启的sql找到了,想分析drainer重启原因

drainer进程的内存有没有监控,是在启动过程中重启的还是使用中重启的,drainer在启动过程中占用内存特别大,会将上游历史数据在内存中遍历一遍,启动完成后内存使用恢复正常;

drainer还有其他报错日志吗?

有监控,内存使用正常的

有重启的stderr日志,{“logger”:“etcd-client”,“caller”:“v3@v3.5.2/retry_interceptor.go:62”,
“msg”:“retrying of unary invoker failed”,“target”:“etcd-endpoints://0x52e038e000/192.168.1.1:2379”,“attempt”:0,“error”:“rpc error: code = DeadlineExceeded desc = context deadline exceeded”}

看一下pd的状态

pd状态显示都是正常的,也没有出现leader切换,还需要看什么吗

看一下连接的pd是否存在问题

连接的pd正好是tidb OOM的合并部署的机器,pd日志显示自身夯住了2分钟,不过是follow,不知道为啥有这样的情况,以后还得看下follow日志

是pd的问题嘛

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。