首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到达的进程的MAX_UTILIZATION是否会导致“无法获取托管连接”异常?

到达的进程的MAX_UTILIZATION是否会导致“无法获取托管连接”异常?
EN

Stack Overflow用户
提问于 2016-09-06 18:26:58
回答 2查看 528关注 0票数 0

JBoss 5.2应用程序服务器日志中填充了数千个以下异常:

代码语言:javascript
复制
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包装器代码,它试图从池中获得一个DB连接。

在Oracle DB端,我运行了以下查询:

代码语言:javascript
复制
select resource_name, current_utilization, max_utilization, limit_value 
from v$resource_limit 
where resource_name in ('sessions', 'processes');

这产生了输出:

代码语言:javascript
复制
RESOURCE_NAME   CURRENT_UTILIZATION     MAX_UTILIZATION     LIMIT_VALUE
processes       1387                    1500                1500
sessions        1434                    1586                2272

鉴于达到了1500个进程的限制,这会导致我们遇到的JBoss异常吗?我也一直在调查连接泄漏的可能性,但到目前为止还没有发现任何证据。

这里推荐的行动方案是什么?简单地增加限制是一个有效的解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2016-09-06 18:53:26

嗯,很奇怪。有没有可能,JBOSS中的异常包装隐藏了最初的错误?您应该会得到一些文本以ORA-开头的sql异常。也许您的JDBC包装器不能正确处理错误。

建议的操作是:

Oracle v$session,尤其是通过v$sql将STATUSLAST_CALL_ETSQL_ID、Oracles sql_id(prev_sql_id)列到sql_text中。< code >H115如果您的应用程序存在连接泄漏,sql_id和pred_sql_id可能会将您指向源代码中最后使用连接的位置(即,连接泄漏的位置)。

票数 0
EN

Stack Overflow用户

发布于 2016-09-06 19:13:48

通常,当max_utilization获得进程的值时,侦听器将拒绝到数据库的新连接。您可以在警报日志中看到与其相关的错误。为了在数据库端解决这个问题,你应该增加进程参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39346734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档