Медленный HikariDataSource.getConnection() при медленном при низком трафике, быстро при большом трафикеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Медленный HikariDataSource.getConnection() при медленном при низком трафике, быстро при большом трафике

Сообщение Anonymous »

Привет, у меня странная проблема.
Я использую базу данных Oracle и имею 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
Редактировать:
Насколько я понимаю, если у нас есть большой период без обращения к БД, эти физические соединения с БД, завернутые из Хикари, закрываются.
Нужно ли мне устанавливать minimumIdle и idleTimeout? Если я неактивен в течение 2 часов, все соединения превысят maxLifetime и будет создано новое соединение? Нет необходимости в минимальном режиме ожидания, верно?
Пример:
Давайте

Код: Выделить всё

minimumIdle 1
idleTimeout 2 minutes
maxLifeTime 20 minutes
Когда в моем приложении никто не делает запросы в течение ночи, я ожидаю, что Хикари закроет каждое соединение через 2 минуты после последнего запроса соединения, после закрытия последнего соединения создаст новое (и удержит его в пуле), а затем закроет и заново создаст это неактивное соединение каждые 20 минут. Я правильно понял? И это решение моей проблемы?


Пополнение пула происходит примерно каждые 30 секунд. Таким образом, если имеется 5
простаивающих подключений и запрос поступает и использует одно из них,
оставляя 4 незанятых, если запрос завершается и соединение
возвращается до «пополнения», пул снова будет иметь 5 простаивающих
подключений и не будет расти.


Ссылка:
[Понимание поведения пула соединений HikariCP]
Изображение


Подробнее здесь: https://stackoverflow.com/questions/582 ... big-traffi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»