Мы сталкиваемся с проблемой в Java-приложении, где количество подключений к базе данных SQL-сервера постоянно увеличивается.База данных настроена в группе высокой доступности, а соединение приложения с базой данных настроено через постоянный прослушиватель SQL Server.Пул соединений был реализован с использованием dbcp2.
Чтобы устранить проблему, мы попытались запустить рабочую нагрузку приложения в двух разных режимах подключения к базе данных.В первом режиме используется постоянный прослушиватель, а во втором - подключение напрямую к первичному узлу базы данных группы HA.
Мы обнаружили, что непрерывное увеличение числа соединений с базой данных было обнаружено только тогда, когда соединения былинастроен с использованием всегда включенного слушателя.В этом случае количество соединений продолжает расти, что приводит к сотням подключений к базе данных, значительно превышающим пределы, установленные как часть параметров пула соединений.
Когда была запущена та же самая рабочая нагрузка приложения с подключением базы данных непосредственно к первичному узлуне было резкого увеличения числа соединений.Число не выходило за пределы, установленные для пула соединений.
Устанавливаются следующие параметры пула соединений.
jdbc.driverClassName=com.microsoft.sqlserver.
jdbc.SQLServerDriver
jdbc.maxActive= 20
jdbc.maxTotal= 20
jdbc.maxIdle= 20
jdbc.minIdle=20
jdbc.maxWait= 30000
jdbc.autoReconnect=5
jdbc.initialSize=10
jdbc.defaultAutoCommit=false
jdbc.validationQuery=select 1
jdbc.testOnBorrow=false
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=150
jdbc.testWhileIdle=true
jdbc.timeBetweenEvictionRunsMillis=120000
jdbc.minEvictableIdleTimeMillis=180000
jdbc.numTestsPerEvictionRun=5
jdbc.setMaxWaitMillis=30000
jdbc.removeAbandonedOnBorrow=true
jdbc.removeAbandonedOnMaintenance=true
Независимо от типа конфигурации мы ожидали количество соединенийоставаться в заданных пределах.
Существуют ли какие-либо конкретные параметры, которые необходимо настроить, чтобы заставить это работать должным образом в сценарии постоянной настройки?
Любые указатели помогут.Спасибо.