Hikari getconnection работает медленно, даже если подключений больше, чем потоков

#java #spring #multithreading #connection-pooling #hikaricp

#java #весна #многопоточность #объединение пулов соединений #hikaricp

Вопрос:

У меня есть приложение, которое считывает сообщения из IBM MQ, обрабатывает их и записывает данные в Oracle db.

Приложение настроено на 6 одновременных потоков (должно обрабатывать максимум 6 сообщений одновременно, если я правильно понимаю) и минимум и максимум 12 подключений в пуле подключений.

В качестве теста я записываю в очередь 30 сообщений, которые выполняют довольно трудоемкие операции с БД. Поскольку существует только 6 потоков и 12 подключений, насколько я понимаю, для нового потока всегда должно быть доступное соединение.

Но я постоянно вижу, что getConnection занимает более 300 мс.

Вот соответствующая часть конфигурации:

 spring:
  jms:
    cache.enabled: false
    listener:
      concurrency: 1
      max-concurrency: 6
   datasource:
    driverClassName: "oracle.jdbc.OracleDriver"
    url: "[dbUrl]"
    username: "user"
    password: "pw"
    hikari.minimum-idle: 12 
    hikari.maximum-pool-size: 12
  

Я использую Spring 5.2.5 с Spring Boot 2.2.6.

Чего мне не хватает? Я ожидал, что getConnection всегда будет возвращаться в течение нескольких мс, даже если операции с БД могут занимать много времени?