|
|
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Добрый день! Итак, есть soap-сервис, который тупо выполняет оракловые запросы. Иногда (вот сейчас) он не может ничего выполнить. Треддамп состоит в основном из Код: sql 1. 2. 3. 4. 5. 6. 7. И ни одного открытого коннекта. Вообще ни одного! Перезапуск приложения не помогает- опять копятся такие же потоки. Гугление выдаёт похожие вопросы ( тут , тут ), но без ответов. telnet с хоста приложения на хост/порт сервера БД проходит. Сетевой админ пишет, что "Сервис устанавливает подключение с сервером, секунду простаивает, потом завершает подключение". Что за бред? Куда копать? Linux: Red Hat Enterprise Linux Server release 6.4 (Santiago) JDK: 1.8.0_11 64bit dbcp2: 2.0.1 jdbc: 11.2.0.3.0 БД: oracle: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production -- Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 11:45 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
В DBCP заканчивается лимит соединений. Либо потолок слишком низкий установлен. Либо соединения утекают (не закрываются) и поэтому быстро заканчиваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 11:48 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Собственно, если посмотреть полный дамп всех потоков, то по нему будет видно какое количество соединений на данный момент действительно используется в рабочем коде. Сравнив его с лимитом пула, можно узнать есть утечка или нет. Не помню на счет именно DBCP, но должна быть где-то настройка чтобы он насильно забирал неактивные соединения по таймауту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 11:50 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСобственно, если посмотреть полный дамп всех потоков, то по нему будет видно какое количество соединений на данный момент действительно используется в рабочем коде. Сравнив его с лимитом пула, можно узнать есть утечка или нет. Не помню на счет именно DBCP, но должна быть где-то настройка чтобы он насильно забирал неактивные соединения по таймауту. Вообще это очень странно. Т.е. приложение проработало 10 дней, а потом не может проработать и 10 минут в течении 4-5 часов. Потом снова неделю-другую работает. Бред, полный бред. Нагрузка не столь велика- я собрал из логов и запустил- на локальном компе всё отработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 12:13 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВ DBCP заканчивается лимит соединений. Либо потолок слишком низкий установлен. Либо соединения утекают (не закрываются) и поэтому быстро заканчиваются. Они когда-то же должны закрываться... Но да, маловато было- поставил максимум 128. Ну и добавил логирование с подсчётом открытых/закрытых соединений поверх PoolingDataSource и его PoolGuardConnectionWrapper. Буду смотреть ещё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 12:35 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Настройте отдельное логирование самого пула и проанализируйте его в проблемные моменты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 12:58 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Alexey TominОни когда-то же должны закрываться... Нет, даже если сервер убил соединение, но в Java оно не закрыто, пул его все равно может считать как используемое, если только у него нет настроек возвращать его насильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 12:59 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAlexey TominОни когда-то же должны закрываться... Нет, даже если сервер убил соединение, но в Java оно не закрыто, пул его все равно может считать как используемое, если только у него нет настроек возвращать его насильно. У меня всегда try-with-resource, так что должны (обязаны!) закрываться. BlazkowiczНастройте отдельное логирование самого пула и проанализируйте его в проблемные моменты. Я так и сделал- перекрыл расширил PoolingDataSource с учётом и логированием в getConnetcion и close ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 13:13 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Alexey TominУ меня всегда try-with-resource, так что должны (обязаны!) закрываться. Statement и ResultSet тоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 13:16 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAlexey TominУ меня всегда try-with-resource, так что должны (обязаны!) закрываться. Statement и ResultSet тоже? Statement ни используется вообще, а вот PreparedStatement - да, все. Вот ResultSet почти нигде, но они ж закрываются при закрытии Statement? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 13:40 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Alexey TominStatement ни используется вообще, а вот PreparedStatement - да, все. JFYI: Код: java 1. Alexey TominВот ResultSet почти нигде, но они ж закрываются при закрытии Statement? На драйвер надейся, а сам не плошай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 13:44 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, была очень похожая проблема. вроде связана была с какими-то тонкими настройками в оракле т.е. проявлялась не на всех серверах БД симптом- забивался весь пул коннектов к БД при этом оракл считал, что коннектов нет добавляли такие параметры инициализации датасорса: Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 10:46 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
Dmitry.была очень похожая проблема. вроде связана была с какими-то тонкими настройками в оракле т.е. проявлялась не на всех серверах БД симптом- забивался весь пул коннектов к БД при этом оракл считал, что коннектов нет добавляли такие параметры инициализации датасорса: Код: java 1. 2. 3. 4. 5. Спасибо, попробую. Правда проблема возникает раз в 10 дней где-то, так что сложно будет понять, что и как :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:23 |
|
||
|
Продолжение проблем - oracle, dbcp2, зависания...
|
|||
|---|---|---|---|
|
#18+
у dbcp свойство то ли maxidle толи просто idle выставить надо, не помню уже, если плохо закрываешь соединения, например resultset не клозишь, то рано или поздно соеденения кончаются и приехал, так у меня с mysql одно время было, до сих пор только догадываюсь, что было, этот idle или как его там, настроил и все конекты закрывать аккуратно начал, все прошло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:35 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38943368&tid=2125506]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 515ms |

| 0 / 0 |
