一個JBoss 5.2應用服務器日誌充滿了千元以下異常:過程可達到MAX_UTILIZATION是否導致「無法獲得託管連接」異常?
Caused by: javax.resource.ResourceException: Unable to get managed connection for jdbc_TestDB
at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:441)
at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:424)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:496)
at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:941)
at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:96)
... 9 more
Caused by: javax.resource.ResourceException: No ManagedConnections available within configured blocking timeout (30000 [ms])
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:311)
at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:689)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:404)
... 13 more
我扒掉異常的第一部分,這基本上是其試圖獲取DB我們內部的JDBC包裝代碼來自池的連接。
望着Oracle數據庫端,我跑的查詢:
select resource_name, current_utilization, max_utilization, limit_value
from v$resource_limit
where resource_name in ('sessions', 'processes');
這產生的輸出:
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
processes 1387 1500 1500
sessions 1434 1586 2272
鑑於該進程的1500極限達到的事實,將這個引起我們遇到的JBoss異常?我也一直在調查連接泄漏的可能性,但到目前爲止還沒有找到任何證據。
這裏推薦的行動方案是什麼?簡單地增加限制一個有效的解決方案?
謝謝,頂級異常是'異常插入到數據庫: org.jboss.util.NestedSQLException:無法獲得jdbc_TestDB的託管連接; - 嵌套的throwable:(javax.resource.ResourceException:無法獲得jdbc_TestDB的託管連接)',StackTrace中沒有提到'ORA-',我可以看到。 – ptha
查看此答案:http://stackoverflow.com/a/27512651/836215。通常,Oracle Jdbc驅動程序會拋出以ORA-開頭的異常。也許你的包裝會以某種方式丟棄這些信息,那麼調查就會更加困難。 –
ibre5041
我在代碼中看不到任何地方吞噬異常,所以也許jBoss正在這樣做,我不能控制它。這個問題可能是由於會話限制和進程限制不匹配的原因嗎?會話最大利用率1586大於進程限制1500,關係不是1:1,但是爲進程配置下限有意義嗎?不幸的是,我沒有直接訪問或控制發生這種情況的環境。 – ptha