2016-09-06 8 views
0

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, которые мы испытали? Я также изучал возможность утечки соединений, но пока не нашел доказательств этого.

Каков рекомендуемый курс действий здесь? Просто ли лимит допустимого решения?

ответ

0

hmm странно. возможно ли, что обработка исключений в JBOSS скрывает исходную ошибку? Вы должны получить исключение sql, текст которого начинается с ORA-. Возможно, ваша обложка JDBC неправильно обрабатывает ошибки.

Рекомендуемые действия заключается в следующем:

  • проверки настроенного размера пула соединений с processessessions Oracle запуска paramters.
  • проверка Oracles вид v$session, особенно колонны STATUS, LAST_CALL_ET, SQL_ID, PREV_SQL_ID.
  • перевести sql_id (prev_sql_id) в sql_text через v $ sql.
  • Если приложение имеет утечку соединения, sql_id и pred_sql_id могут указывать вас на место в исходном коде, где последнее соединение использовалось (например, когда оно было пропущено).
+0

Спасибо, исключение верхнего уровня: «Исключение ввода в DB: org.jboss.util.NestedSQLException: невозможно получить управляемое соединение для jdbc_TestDB; - inested throwable: (javax.resource.ResourceException: не удалось получить управляемое соединение для jdbc_TestDB) ', в OStatTrace, о котором я вижу, не упоминается' ORA-'. – ptha

+0

См. Этот ответ: http://stackoverflow.com/a/27512651/836215. Обычно драйвер Oracle Jdbc генерирует исключения, описания которых начинаются с ORA-. Может быть, ваша обертка каким-то образом отбрасывает эти сообщения, тогда расследование будет намного сложнее. – ibre5041

+0

Я не вижу нигде в нашем коде, проглатывая исключение, поэтому, возможно, jBoss делает это, с которым я не контролирую. Может ли эта проблема возникнуть из-за того, что ограничение сеанса и ограничение процесса не совпадают? Максимальное использование сеанса 1586 больше, чем ограничение Процессы 1500, отношение не 1: 1, но имеет смысл настроить нижний предел для Процессов? К сожалению, я не имею прямого доступа к среде, где это происходит, или контролирует ее. – ptha

0

Обычно, когда max_utilization получает процессов значения слушателя откажет новые подключения к базе данных. вы можете видеть, что ошибки относятся к нему в журнале предупреждений. для решения этой проблемы на стороне базы данных необходимо увеличить параметр процессов.

 Смежные вопросы

  • Нет связанных вопросов^_^