用jdbc连接,连接经常超时:TDengine ERROR (0x80000019): Conn read timeout。

【TDengine 使用环境】
测试

【TDengine 版本】

【操作系统以及版本】

tsdb:3.3.8.4

【部署方式】

容器

【集群节点数】

1

【集群副本数】

1

【描述业务影响】

用hikari jdbc连接池,连接经常超时:TDengine ERROR (0x800019): Conn read timeout。连接池配置如下:

hikari:
  # 最大连接池数量
  maxPoolSize: 20
  # 最小空闲线程数量
  minIdle: 10
  # 配置获取连接等待超时的时间
  connectionTimeout: 30000
  # 校验超时时间
  validationTimeout: 3000
  # 空闲连接存活最大时间,默认10分钟
  idleTimeout: 600000
  # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
  maxLifetime: 0
  # 多久检查一次连接的活性
  keepaliveTime: 0

【问题复现路径/shan】做过哪些操作出现的问题

【遇到的问题:问题现象及影响】

后续连接池不可用。程序卡死。

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

TDengine ERROR (0x800019): Conn read timeout。

是能够正常连接成功,但运行过程中会出现 连接超时 的问题吗?

出现超时的时候,在应用的机器上执行如下命令验证一下服务端是否正常:

curl -uroot:taosdata  ip:6041/rest/sql -d “show dnodes“

看看是否能够正确返回结果。

我也有类似的问题,“curl -uroot:taosdata ip:6041/rest/sql -d ’show dnodes‘”,没有返回,也没有报错,taosadapter服务状态是运行中,但是重启taosadapter服务就好了,这是版本的问题么?还是有什么设置我没设置好?

那可能是taosadapter的连接占满了。出现问题的时候,是有很多的并发写入或查询吗?只有这样才可能将连接占满。

如果出这种问题时,taosd的负载不高,可以加大 taosadapter 支持的最大并发数:
maxAsyncConcurrentLimit

设置 C 异步方法的最大并发调用数(0 表示使用 CPU 核心数)。