立即咨询
WebLogic 典型故障案例:数据库连接泄漏问题

故障现象

 

 

使用 weblogic 数据源,系统运行一段时间后,数据源连接池达到最大,可用连接数为0,无法连接数据库。应用报错。

 

 

分析过程

 

 

这是明显的数据库连接泄漏问题,首先进入weblogic 控制台,打开左侧菜单, 配置连接池:

 

主页 >JDBC 数据源概要 >[JDBC Data Source-0],进入连接池页面,在高级中修改“非活动连接超时(Inactive Connection

Timeout)”值为 60。保存weblogic 配置生效,查看weblogic 的server 日志有如下

<2015-10-8 下午 10 时21 分29

秒 GMT+08:00>

001153>

o the connection pool "rlsds", currently reserved by: java.lang.

Exception

     at weblogic.jdbc.common.internal.ConnectionEnv. setup(ConnectionEnv.java:325)

     at weblogic.common.resourcepool.ResourcePoolImpl.reserveR esource(ResourcePoolImpl.java:363)

…………

     at SmartPool.plugin.WebLogicConUtil. getConnection(WebLogicConUtil.java:91)

…………

 

此段信息说明weblogic强制回收了数据库连接,通过打印出的堆栈信息,可以找到建立连接的信息,通过提示信息查找代码中的bug。

 

 

解决方案

 

 

1、修改连接池的“非活动连接超时(Inactive Connection Timeout)”,值设为 60(默认为 0, 即不启用)。 

 

2、根据日志打印的堆栈信息,修改代码中的 bug。

国内领先的I架构服务+产品提供商
立即领取企业福利 预约您的专属顾问
400-1037-370