使用tidb-loadbalance 客户端负载后出现多次请求 偶发性出现Communications link failure

【 TiDB 使用环境】生产环境
【 TiDB 版本】v8.1.0
【复现路径】多次执行
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】



jdbc连接: jdbc:tidb://xx:4000,xx:4000,xx:4000/x?tidb.jdbc.url-mapper=random&characterEncoding=utf8&useSSL=true&useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSqlLimit=10000&prepStmtCacheSize=1000&useConfigs=maxPerformance&useLocalTransactionState=false&rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8&connectTimeout=60000&socketTimeout=120000&allowMultiQueries=true&failOverReadOnly=false&maxReconnect=3&autoReconnect=true
客户端线程池使用druid

先排除一下网络问题。

1 个赞

应该不是网络问题,都在同一组内网里

ping个长包观察一下,这种现象有规律吗?

2 个赞

没规律,多执行几次就出现。

可能和jdbc驱动包也有关系,可以尝试更换一下jdbc驱动包试试。

2 个赞

TiDB 服务器的连接数达到上限了吗
socketTimeout=120000 超时参数有点大,我们一般应用是在3000-5000

应该是你连接池设置了10s的超时时间,改大一下试试

配置我感觉没啥问题,楼上说的驱动版本的问题是有可能的,建议发一下mysql驱动的版本看一下。

找下看哪里设置了超时 10s 吧

系统用的是druid的链接池,版本1.2.16 这个版本的onnectTimeout、socketTimeout不生效 ,升级到1.2.22就不会可以了。druid issue: CommunicationsException: Communications link failure The last packet successfully received from the server was 11,541 milliseconds ago · Issue #5835 · alibaba/druid · GitHub
现在存在另外一个问题,在并发下某些sql的执行时间会暴增 从1s->15s。
问题类似:TiDB 简单查询语句耗时异常的慢, Coprocessor Executor Time 远大于 Coprocessor Process Time - #4,来自 xfworld

1 个赞

这个问题,你再单独开一个贴子吧,最好能提供一下执行计划的对比。

并发查询导致查询变慢 新贴链接

1 个赞