tidb oom后恢复时间很长

版本:v4.0.14
tidb-pd部署在同一台机器上,三个tidb节点,三个pd节点,三个kv节点。
背景:用haproxy代理,开启了ip传透,宕机原因是因为慢sql造成的oom

内存监控如下:
image

下面的文件为welcome前后的日志,不理解为什么需要这么长时间来恢复
a.txt (1.1 MB)

tidb是无状态的,oom 后会快速拉起,看日志也是快速拉起来的,也有 cop 请求,你说的慢是指的什么?

您看日志里面8:21就开始没有记录了,8:41才有welcome的消息,应用7:57就不能访问了,因为是utc时间,所以日志这里的8:00对应16:00

tidb err 和系统内核日志排查下呢,以及节点流量监控看下

b.txt (10.9 KB)
内核日志如上

节点流量监控是指qps之类的么,我这上层用haproxy做了代理,只有特殊的查询走这个节点,其他查询不走这个节点

这是个ap型业务

期待大牛指点

主要是看下事发当时该节点的流量情况、访问报错的信息,操作系统内核日志是不是发错了,tidb error 有报错么

tidb error日志:

[15020087.583767] Killed process 14471 (tidb-server) total-vm:65937704kB, anon-rss:63770352kB, file-rss:0kB
[15889190.856602] tidb-server invoked oom-killer: gfp_mask=0x24201ca, order=0, oom_score_adj=0
[15889190.856606] tidb-server cpuset=/ mems_allowed=0
[15889190.856611] CPU: 5 PID: 10622 Comm: tidb-server Not tainted 4.4.0-1128-aws #142-Ubuntu
[15889190.856890] [10592] 20065 10592 16580923 15924955 31552 66 0 0 tidb-server
[15889190.856895] Out of memory: Kill process 10592 (tidb-server) score 979 or sacrifice child

流量不是很大,有10条左右慢查询,占用了大量内存

内核日志我是用的dmesg -T,应该没有错吧,或者您这头要哪个

大佬,还有什么需要提供的请告诉我

请提供下以下信息:
1./var/log/kern.log oom重启前后的日志
2.问题时间段,该机器上的其它进程正常么?
3.故障前后的监控导出看下吧,TiDB 的和 Node_exporter 的

1.这个看了下只有重启后的日志,这个文件就100多行
kern.log (15.4 KB)
2.问题其他的进程没法观看,问题期间登陆不上机器,exporter死掉了,能登陆的时候发现ldap服务也掉了,应该也是oom影响的
3.监控私发给大佬了,如果有问题您在告诉我

看起来是系统夯死了吧,sar -B 事发时间段的数据贴下

抱歉啊,这个没有开,还有其他方法么,看了下系统信息,确实应该hung死了

我大概清楚我昨天的问题了,是tidb占用的内存太大了,机器hung住了,但是tidb的进程貌似还没有死,等到8:40的时候才真正死的,然后8:41就起来了

请问大佬有什么办法可以避免这个问题么

那段时间点的cpu情况
image

image

image

可以考虑降低 vm.dirty_ratio 的比例到一个适合业务负载的值

好的,感谢大佬,我明天试试,cpu,内存隔离和这个参数,看能不能避免hung死的情况

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