故障現(xiàn)象
使用 weblogic 數(shù)據(jù)源,系統(tǒng)運(yùn)行一段時(shí)間后,數(shù)據(jù)源連接池達(dá)到最大,可用連接數(shù)為0,無法連接數(shù)據(jù)庫。應(yīng)用報(bào)錯(cuò)。
分析過程
這是明顯的數(shù)據(jù)庫連接泄漏問題,首先進(jìn)入weblogic 控制臺,打開左側(cè)菜單, 配置連接池:
主頁 >JDBC 數(shù)據(jù)源概要 >[JDBC Data Source-0],進(jìn)入連接池頁面,在高級中修改“非活動連接超時(shí)(Inactive Connection
Timeout)”值為 60。保存weblogic 配置生效,查看weblogic 的server 日志有如下
<2015-10-8 下午 10 時(shí)21 分29
秒 GMT+08:00> <Warning> <JDBC> <BEA-
001153> <Forcibly releasing inactive connection "weblogic.jdbc. wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@ fe001a5" back int
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強(qiáng)制回收了數(shù)據(jù)庫連接,通過打印出的堆棧信息,可以找到建立連接的信息,通過提示信息查找代碼中的bug。
解決方案
1、修改連接池的“非活動連接超時(shí)(Inactive Connection Timeout)”,值設(shè)為 60(默認(rèn)為 0, 即不啟用)。
2、根據(jù)日志打印的堆棧信息,修改代碼中的 bug。