JBoss 5.2应用程序服务器日志中充满了数千个以下异常:
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
我已经剥离了异常的第一部分,这基本上是我们的内部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的PROCESSES限制,这是否会导致我们遇到的JBoss异常?我也一直在调查连接泄漏的可能性,但到目前为止还没有找到任何证据。
这里推荐的行动方案是什么?只是增加限制是一个有效的解决方案吗?
答案 0 :(得分:0)
ORA-
开头。也许你的JDBC包装器不能正确处理错误。
建议的行动是:
processes
sessions
Oracle启动参数检查连接池的配置大小。v$session
,尤其是列STATUS
,LAST_CALL_ET
,SQL_ID
,PREV_SQL_ID
。答案 1 :(得分:0)
通常当 max_utilization 获取进程值时,侦听器将拒绝与数据库的新连接。您可以在警报日志中看到与其相关的错误。要在数据库端解决此问题,您应该增加进程参数。