Большое количество соединений jdbc с конфигурацией SQL Server Always On - PullRequest
1 голос
/ 24 сентября 2019

Мы сталкиваемся с проблемой в 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

Независимо от типа конфигурации мы ожидали количество соединенийоставаться в заданных пределах.

Существуют ли какие-либо конкретные параметры, которые необходимо настроить, чтобы заставить это работать должным образом в сценарии постоянной настройки?

Любые указатели помогут.Спасибо.

...