我新装的5.2的集群,在没有任何请求的情况下。某一台PD的TCP Connections达到了150K。

【 TiDB 使用环境】 5.2
【概述】:
我新装的5.2的集群,在没有任何请求的情况下。某一台PD的TCP Connections达到了150K。
从10月5日搭好集群一直没有对集群有任何操作,但是这台PD的TCP 连接逐渐上升。最后到了150K。重启后
连接数下降了。监控指标是 **[NODE_tcp_estab_num_more_than_50000]
【背景】:重启整个集群
【现象】:无
【问题】:不知道对集群是否有影响
【业务影响】:无
【TiDB 版本】:5.2
【附件】:

1 个赞

除了 TCP Connections,其他负载有没有异常,可以 netstat 检查都是哪些 IP 过来的连接或者抓一下 PD goroutine 看看 curl http://{IP}:2379/debug/pprof/goroutine?debug=2 > goroutine

1 个赞

goroutine的文件,麻烦帮帮忙分析下,谢谢!goroutine.tar.gz (5.6 MB)

1 个赞

TCP Connections 从什么时候开始上涨的,刚启动就出现了么;看下这个 PD 节点是不是 leader;是 5.2.1 版本么,有没有调整过什么参数,比如 region 上报心跳间隔

1 个赞

是从集群启动之后就会慢慢上涨,这个节点是leader,是5.2.1版本,没有调整什么参数

1 个赞

我们看了。PD是leader。我们什么参数都没改过。我们netstat看了都是pd和本机的一个tidb server在连。

问题昨天已经反馈,有进展我再在这里同步吧

是不是tidb的pd进程压根没有使用tcp keepalive呢?
请参考下这篇文章哈
https://cxymm.net/article/ptrunner/108730359

内部测试没有复现过,可以再查一下

  1. 操作系统和内核版本 uname -a
  2. 网络配置相关参数 sysctl -a

当时 PD cpu 使用多少,如果负载比较高可以抓一下 profile
curl -G “pd-ip:2379/debug/pprof/profile?seconds=30” > cpu.profile

3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
sysctl.txt (163.5 KB)

集群的操作系统开启了ipv6,不知道和这个有没有关系;
cpu的负载很低,这个estab的连接数十持续增长

连接状态.txt (32.2 MB)

这个问题现场还在么,麻烦抓一下 profile
curl -G “pd-ip:2379/debug/pprof/profile?seconds=30” > cpu.profile

cpu.profile (18.7 KB),现场一直在的,麻烦看下哈!

好的,我们再看下

目前怀疑方向是下面几种可能:

  • tidb 的某个 bug 导致和 pd 建立过多的连接,该连接为 tidb 主动向 pd 发起
  • tidb 和 pd 建立连接后,pd 侧由于什么 bug 一直不释放,该连接为 tidb 主动向 pd 发起
  • 或者系统上其它程序可能消耗产生大量的 tcp 连接

看上面提到pd和本机的一个tidb server在连,能否拿一下连接的这两台 pd 和 tidb server 在出现问题时间段内的日志( pd.log 和 tidb.log )

1 个赞

我们这边有遇到相似问题,你这边增长趋势看下来是 5.8个 / min。
想问几个问题:1. 该集群配置和拓扑结构?几台 tidb,是否有 tiflash 或者 BR/DM 之类的。2. 目前是否恢复,如何恢复的?3. 能否在 pd 问题节点用 wireshark 抓半小时的包出来?

https://github.com/pingcap/tidb/issues/30571

这里修复了几个 http 连接未关闭导致泄漏的问题,在新的 5.2 分支会带进去,下个 5.2 小版本里面修复

1 个赞

1、增长趋势差不多是每分钟8个。
2、我这边集群拓扑是6PD+6TIDB+96TIKV+48TIflash。
3、目前还没恢复,目前解决办法是定期重启。
4、我稍后用wareshark抓半小时包出来。
请问你们集群是什么规模呢?

这个http连接未关闭导致泄露的问题,5.3版本master上是否修复了呢?如果没有修复我们需要修复这个bug如何处理比较稳妥呢?目前的处理方式是比较粗暴,是定期重启这台pd

应该就是上面 github 修复的问题了,打上 patch 就正常了。