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
Я содранной первую часть, за исключением, что в основном наш внутренний JDBC код обертки, которая пытается получить DB соединение с бассейном.
Глядя на стороне Oracle DB Я побежал запрос:
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, которые мы испытали? Я также изучал возможность утечки соединений, но пока не нашел доказательств этого.
Каков рекомендуемый курс действий здесь? Просто ли лимит допустимого решения?
Спасибо, исключение верхнего уровня: «Исключение ввода в DB: org.jboss.util.NestedSQLException: невозможно получить управляемое соединение для jdbc_TestDB; - inested throwable: (javax.resource.ResourceException: не удалось получить управляемое соединение для jdbc_TestDB) ', в OStatTrace, о котором я вижу, не упоминается' ORA-'. – ptha
См. Этот ответ: http://stackoverflow.com/a/27512651/836215. Обычно драйвер Oracle Jdbc генерирует исключения, описания которых начинаются с ORA-. Может быть, ваша обертка каким-то образом отбрасывает эти сообщения, тогда расследование будет намного сложнее. –
ibre5041
Я не вижу нигде в нашем коде, проглатывая исключение, поэтому, возможно, jBoss делает это, с которым я не контролирую. Может ли эта проблема возникнуть из-за того, что ограничение сеанса и ограничение процесса не совпадают? Максимальное использование сеанса 1586 больше, чем ограничение Процессы 1500, отношение не 1: 1, но имеет смысл настроить нижний предел для Процессов? К сожалению, я не имею прямого доступа к среде, где это происходит, или контролирует ее. – ptha