长时间连接tidb异常

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
一个应用程序连接tidbserver,过一段时间1到2个月左右会出现连接异常。应用程序异常如下


tidb的异常如下

每次出现这个问题,重启应用程序还是连接不上,需要重启tidbserver才可以解决,我到其他服务器上去连接又是没问题的。
有什么办法解决这个问题吗?

大概率是负载均衡LB的问题。

LB用的是haproxy? ubuntu20 apt直接装的?这个方式安装的haproxy是明确的有bug。会卡死连接。

1 个赞

java的链接池配置中,没有链接空闲超市的配置么?

:thinking:哈?还有这么个bug啊,keepalived+haproxy能解决么?

看报错应该是网络链路不稳定,跑一段时间就断开了。


这是连接池的设置

用了tiproxy也没解决

1 个赞

这个有没有解决方案

不能,这样装的haproxy的版本就是带bug的。当初坑了很久才发现是haproxy的问题。

现象是haproxy会拿着死连接不释放。必须换haproxy的版本,手动编译了一个才解决。现象和他这个描述类似。

不过本贴这个问题后面说了换了tiproxy也不能解决。这个就不知道是什么原因了。

2 个赞

config.setIdleTimeout(600000); // 设置空闲连接超时时间为10分钟,单位毫秒
config.setMaxLifetime(1800000); // 设置最大生命周期,超过这个时间的连接将被终止,单位毫秒

我建议业务配置上,阈值业务自己定,如果某个链接变得不活跃了自动释放掉重新建链接,不要无限制的连着,因为网络抖动,实例重启都会导致这个链接被动断开

我是flinkcdc,需要一直常连接,我代码里面也有重连,就是重连也连不上,重启应用也连不上,只能重启tidb server

下次遇到这类问题后,建议在用mysql客户端链接下tidbserver看看可以连接上么

keepalived,这么重要的参数都不要么?

没有这个参数,超时后连接可能还在,在引用的时候,就会出现这个错误了,因为没探测是否存活,是否可用。

这个问题找你公司的架构师帮你看看…

只看日志信息,两端都是正常的:

  1. 在 JAVA 程序那里,重启也会直接报错,并不是执行了一段时间报错的。
  2. 在 TiDB 这里,是接收到了异常的报文,直接关闭连接了。

描述一下网络链路吧,程序和 TiDB 之间有哪些中间件,大概率还是某个中间件的问题。

1 个赞

看这个描述,更像是负载均衡导致的,很多负载均衡都是可以复用端口的,你在一台机器上重试没用

1 个赞

重启tidbserver试试