【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】无法连接到数据库
【复现路径】创建,链接
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
3 个赞
1、检查监听服务器监听端口是否正常启动。
2、感觉是握手通信包没有通,连接丢失,感觉可能有安全设备限制了。
1 个赞
邓欢欢
2026 年4 月 12 日 14:20
#4
AntTech_GODQKU:
【问题描述】无法连接到数据库
【复现路径】创建,链接
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
第一步:核心排查(最快定位问题)
这是解决问题最高效的路径,建议优先尝试:
检查IP白名单
这通常是导致此类报错(特别是连接瞬间失败)最常见的原因。
检查点 :请确认你尝试连接的客户端IP地址,已经完整且准确 地添加到了OceanBase实例或租户的IP白名单中-1 -4 。
关键细节 :如果你的应用部署在Kubernetes (K8s) 容器 中,并且使用的是OceanBase原生驱动 ,那么白名单中需要添加的是Pod的IP地址 (或所在的整个网段),而不是宿主机的IP。这是因为OceanBase驱动会透传客户端真实IP进行校验-2 。
验证方法 :如果你能用MySQL客户端通过mysql -h... -P... -u... -p... 命令成功连接,但你的Java程序报错,那问题很大概率就出在白名单上-3 。
测试基础网络连通性
在白名单无误的情况下,使用最基础的 telnet 命令来测试网络层是否通畅。
请在你的应用服务器 上执行: telnet <你的数据库IP或域名> <端口号>
telnet 能通是数据库连接成功的必要前提 。如果此步失败,说明网络策略(如安全组、防火墙)或路由配置有问题,需要联系网络管理员先行解决-4 -10 。
第二步:进阶排查(定位深层原因)
如果以上两步未能解决问题,可以根据你的连接方式,参考以下更细致的排查方向:
场景一:通过 OBProxy 连接 (默认是2883端口)
检查 OBProxy 状态 :确认 OBProxy 服务本身运行正常,没有挂起或崩溃-7 -9 。
检查连接模式 :确认你使用的连接串(尤其是用户名格式,如 用户@租户#集群 )是否正确,并且与你租户的实际模式(MySQL或Oracle)相匹配-4 。
场景二:直连 OBServer 节点 (通常是2881端口)
检查服务器负载 :目标 OBServer 节点可能因CPU、内存或磁盘IO过高,无法及时响应新的连接请求-1 。
检查租户状态 :确认你尝试连接的租户是否处于正常运行状态,没有因为异常而被锁定或隔离。
场景三:使用了数据库连接池 (如 Durid, HikariCP)
检查空闲连接回收策略 :OceanBase Server 默认会主动断开空闲超过 15分钟 (或变量 ob_sql_audit_percentage 等控制的超时)的连接-8 。如果连接池未正确配置空闲连接检查和回收机制,可能会尝试使用已被服务端断开的“死连接”而报错。
检查各项超时配置 :连接池的超时参数(如 connectTimeout , socketTimeout )设置可能过于严格。尤其是当首次建立连接或执行初始化查询耗时稍长时,可能会触发超时-1 -5 。
检查驱动版本 :确保你使用的JDBC驱动版本与你的OceanBase版本兼容。在某些情况下,驱动版本不匹配可能导致不可预料的连接问题-1 。
第三步:获取更详细的诊断信息
如果以上所有常规方法都无效,建议你使用OceanBase官方提供的诊断工具,它能帮助你收集更完整的日志和环境信息,便于进一步分析。
bash
复制下载
使用 OceanBase 敏捷诊断工具 (obdiag) 收集诊断信息 obdiag gather --help