Привет, у меня есть эта странная проблема, я использую Oracle db и имею miroservice с простой конечной точкой, которая имеет только getById, что очень быстро 3-15 мс, но вся операция заняла 250 мс. Я погрузился в наши инструменты мониторинга производительности и увидел, что мы потратили более 200 мс на com.zaxxer.hikari.HikariDataSource.getConnection ().
Затем я выполняю запрос 2000 к этой конечной точке в течение 10 минут, и время упало до 1,3 мс. Что происходит? Когда 5 запросов в час требовали 200 с, чтобы установить соединение, а когда 4 запроса в секунду 1.3.?
Что-то не так в конфигурации
spring:
datasource:
connectionTimeout: 10000
maxLifetime: 18000000
maximumPoolSize: 5
cachePrepStmts: true
prepStmtCacheSize: 250
prepStmtCacheSqlLimit: 2048
useServerPrepStmts: true
Изменить: Насколько я понимаю, если у нас есть большой период без обращения к БД, эти физические соединения с БД, обернутые из Hikari, закрываются. Нужно ли мне устанавливать minimumIdle и idleTimeout? Если у меня неактивность 2 часа, все соединения будут превышены maxLifetime и будет создано новое соединение? Нет необходимости в MinimumIdle, правда? Пример: пусть будет
minimumIdle 1
idleTimeout 2 minutes
maxLifeTime 20 minutes
Когда мое приложение остается без запросов в ночное время, я ожидаю, что Hikari закроет каждое соединение через 2 минуты после последнего запроса соединения, после закрытия последнего соединения создаст новое (и удержит его в пуле), а затем закроет и воссоздайте это простаивающее соединение каждые 20 минут. Я правильно понял? И это решение моей проблемы?
«Пополнение» бассейна происходит каждые 30 секунд или около того. Итак, если имеется 5 незанятых соединений, и запрос приходит и потребляет одно из них, оставляя 4 незанятыми, если запрос завершается и соединение возвращается до «пополнения», пул снова будет иметь 5 незанятых соединений и не будет расти. .
Ссылка: [Общие сведения о поведении пула подключений HikariCP]
spring.datasource.hikari
зависят от поставщика (если вы не используете очень старую версию Spring Boot). - person M. Deinum   schedule 09.10.2019