首批通过分布式安全可靠测评,为关键业务系统打造
JBoss 部署的 JDBC 应用出现连接数不足的问题
更新时间:2026-07-24 10:01
适用版本
OceanBase 数据库所有版本。
问题描述
生成系统从 Oracle 切换到 OceanBase Oracle 租户后,使用 JBoss 部署的 JDBC 应用出现连接数不足的问题。
诊断信息如下:
- 业务日志上有检查数据库链接有效性方法的报错:

- 从 OBProxy 日志看断开链接是客户端主动发起的行为:
2023-02-24 10:44:36.142691] INFO [PROXY.TXN] ob_mysql_transact.cpp:4538 [1442947][Y0-7FC1494422A0] [lt=9] [dc=0] [ObMysqlTransact::handle_server_connection_break](client_ip={xx.xx.xx.xx:51694}, server_ip={yy.yy.yy.yy:2881}, cs_id=3978625, proxy_sessid=722991146707686687, ss_id=0, server_sessid=0, sm_id=19558539, proxy_user_name=xxx@xxx#xxx, database_name=xxx, server_state="INTERNAL_ERROR", request_cmd="Quit", sql_cmd="Quit", sql=)
这条日志记录显示客户端给 OBProxy 发起了断开链接的命令“Quit”,属于客户端主动关闭链接。
问题原因
JBoss 配置使用 pingDatabase() 来进行数据库链接的有效性检测,但 OceanBase 驱动未实现此类 check 方法,导致检测总是失败,从而触发了大量的建立、销毁链接的行为,获取不到有效链接是导致触发最大连接数限制的原因。
业务端的生产配置:
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<check-valid-connection-sql>SELECT 1 FROM DUAL</check-valid-connection-sql>
<validate-on-match>false</validate-on-match>
解决方法
业务端去掉 valid-connection-checker 配置项后即可恢复正常。