经常报td认证问题

【TDengine /测试

【TDengine 版本】3.3.4.8

【操作系统以及版本】centos7

【部署方式】非容器

【集群节点数】3

【集群副本数】1

【描述业务影响】应用经常报这个认证错误,测试用户密码都没问题,一般重启应用就好了, 好像只出现在集群环境 有遇到过的吗

【问题复现路径/shan】没有

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

好像其他环境的一个集群也出现过

【资源配置】

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

根据上面的描述和贴图来看,你目前的主要问题是数据库连接不稳定,偶尔会出现用户密码校验失败,重启集群之后又正常了。
这至少说明了以下几个问题:

  1. 网络的连通性和用户名密码这些都是正确的,要不然肯定连不上
  2. 可能网络不稳定和节点之间网络抖动导致连接校验失败。

建议按顺序尝试以下方案,从改动最小、效果最直接的开始:

  1. 启用并正确配置自动重连 (最关键) :建议在 JDBC URL 中显式开启 autoReconnect 特性 ,这能让驱动在连接异常时自动重试,应用也能及时获得一个健康连接。WebSocket 连接配置示例:
  2. jdbc:TAOS-WS://host1:6041,host2:6041/db?user=root&password=你的密码&enableAutoReconnect=true
    特别注意,密码在 URL 中需进行 URL 编码(如 @ 转为 %40 )。
  3. 增强连接池的健康检查 :如果你使用 HikariCP、Druid 等连接池,务必配置连接有效性检测 。例如,HikariCP 中可以设置:

yaml
spring.datasource.hikari.connection-test-query=select server_status() spring.datasource.hikari.validation-timeout=5000 spring.datasource.hikari.idle-timeout=60000

这能让连接池在分配连接前验证其有效性,避免将坏连接交给应用。

  1. 排查网络与服务端 :检查应用与 TDengine 各节点间的网络质量。同时,在 TDengine 服务端配置文件 /etc/taos/taos.cfg 中关注日志,确保各节点时间差控制在 5 秒以内,建议用 NTP 服务同步。
  2. 升级与审查 :确保应用使用与 TDengine 服务端匹配的最新稳定版 JDBC 驱动。如果密码包含特殊字符,建议先修改为仅包含字母和数字的测试密码,以此排查是否是编码问题导致。

老师,我不是重启集群恢复的,是重启业务应用恢复的,后面还会偶发这个问题,下面是我的nacos对应的tdengine配置

tdengine:

enable: true

replicas: 1

bufferSize: 64

# 地址账号密码区分环境

url: 10.0.0.89:16041

driver-class-name: com.taosdata.jdbc.TSDBDriver

username: ot_taosd

#password: ENC(94n8cefxneRKiFMGD4RjS9ycDCW4NGRE)

password: SLXjsd^gdd(ss12

pool-config:

initial-size: 5 # 初始化对象池大小

min-idle: 0 # 对象池最小空闲对象数, 默认是0

max-idle: 8 # 对象池最小空闲对象数, 默认是8

max-active: 8

max-total: 8 # 对象池最大可用对象数, 默认8

max-wait-millis: -1 # 获取对象是最大等待时间

test-on-borrow: true # 从对象池中借出对象时是否进行测试,默认为 false

test-on-return: false # 返回给对象池时是否测试对象可用,默认为 false

test-while-idle: true # 处于idle队列中即闲置的对象是否被驱逐器进行驱逐验证