SQLException: Cannot get a connection, pool error T imeout waiting for idle object

Приветствую.
При не продолжительной работе приложения (от 1 до 2 часов), наблюдаем ошибку:
Internal Exception: java.sql.SQLException: Cannot get a connection, pool error T
imeout waiting for idle object
Error Code: 0
При этом в конфигурационном файле имеем следующие параметры:
context.xml (500 Байты)

На стороне сервера базы данных ограничений по количеству подключений нет.
SELECT @@MAX_CONNECTIONS AS ‘Max Connections’;
<Max Connections
32767>
Нагрузка на сервер приложений и сервер баз данных остается минимальной не превышает 1-5% по всем параметрам (ЦПУ, ОЗУ …).
Приложение перестает отвечать на пользовательские запросы до перезапуска.
Блокировок на стороне БД нет. Какие-либо долгие (зависшие) запросы на стороне БД отсутствуют.
Кол-во пользовательских сессий не превышает 300.
В качестве сервера приложений используется Tomcat 8.5.35.
java version “1.8.0_191”
Операционная система Windows Server 2012 R2
Сервер баз данных MSSQL Server 2012 SP4
Версия платформы “6.4.5”
Что нужно сделать чтобы устранить возникновение этого исключения и на какие параметры стоит обратить внимание?
Есть ли, еще где-то в конфигурационных файлах параметры, ограничивающие работу с сервером Баз данных?

3 симпатии

Добрый день!

А почему у вас в параметрах соединения стоит maxActive="0"? Как это вообще работает?

Дефолтная конфигурация включает след. параметры:

    <Resource
      name="jdbc/CubaDS"
      type="javax.sql.DataSource"
      maxTotal="20"
      maxIdle="2"
      maxWaitMillis="5000"
...
1 симпатия

Добрый день!
Прошу прощения файл ошибочный скинули, заменил.
Изначально проблема была замечена именно с дефолтными настройками.
Такое ощущение, что он не видит эти настройки…
Кол-во коннектов к БД не превышает 8.

1 симпатия

Ваш файл по прежнему не такой как дефолтный. В любом случае, посмотрите на статистику в Administration > Performance Statistics:

image

Если действительно заняты все connections, скорее всего где-то в коде у вас не закрываются транзакции. Проверьте что везде где вы создаете транзакции программно, они используются в try-with-resources или try-finally блоках.

Здравствуйте, Константин.
Повторюсь, что изначально проблема появилась с дефолтными настройками.
Потом мы пробовали конфигурить.
В данный момент проблема решилась путем добавления параметра “factory” (factory=“org.apache.tomcat.jdbc.pool.DataSourceFactory”) как описано в документации tomcat http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html .

1 симпатия