У меня есть приложение, процесс Java, который работает на JDK 1.8.Мы используем Oracle 12 в качестве базы данных и библиотеку commons-dbcp: 1.2.2 для пула соединений.Этот Java-процесс является многопоточным приложением, и как только поток выполняет запросы к базе данных, он освобождает соединение с базой данных.Соединение переходит из активного в режим ожидания.Но он остается там в течение 30-40 минут, а затем выходит из режима ожидания.
Я напечатал различные свойства org.apache.commons.pool.impl.GenericObjectPool
numActive = 25
maxActive = 20
numIdle = 8
maxIdle = 20
minIdle = 0
testOnBorrow = true
testOnReturn = false
maxWait = 2000
minEvictableIdleTimeMillis = 5000
numTestsPerEvictionRun = 5
softMinEvicatbleIdleTime = -1
testWhileIdle = true
timeBetweenEvictionRunsMillis = 10000
whenExhaustedAction = grow
Согласнона вышеуказанные номера, в соответствии с документацией GenericObjectPool https://commons.apache.org/proper/commons-pool/api-1.6/org/apache/commons/pool/impl/GenericObjectPool.html
поток evictor должен запускаться каждые 10 секунд и требовать все 8 свободных соединений.Но на самом деле этого не происходит.В действительности 1 простое соединение прерывается через полчаса или сорок минут.
Как мне отладить это дальше?Есть ли способ узнать, когда запущен поток evictor (некоторые журналы или что-нибудь).И как я могу гарантировать, что незанятые соединения скоро будут, когда они не используются.