Пул соединений с HikariCP, springboot и kubernetes - PullRequest
0 голосов
/ 21 апреля 2020

Я использую hikariCP для пула соединений в моем приложении с реактивной загрузкой, работающем в кластере kubernetes. Будет много блокирующих вызовов и нескольких запросов к базе данных, поэтому в идеале больше не нужно никаких подключений к базе данных при условии наличия ядер процессора. Предоставление всего ядра процессора одному контейнеру kubernetes приведет к потере ресурсов, поскольку всплеск запросов не всегда будет присутствовать. Поэтому я пытаюсь изучить, как использовать автоскалер в kubernetes, чтобы новые контейнеры приложений могли ускоряться при увеличении количества запросов. Две проблемы:

  • Я попробовал конфигурацию hikari com.zaxxer.hikari.blockUntilFilled = true , чтобы сохранить количество подключений во время запуска приложения заполненным. Но при использовании автоматического масштабирования с увеличением числа запросов это приведет к задержкам в ответе, поскольку создание соединения в пуле займет время. Лучше использовать динамическое c создание соединения hikari на основе скачка спроса, а не создавать все соединения одновременно (во время запуска).
  • Кроме того, каждый контейнер kubernetes будет новым экземпляром приложения, как нам управлять количеством созданных соединений с базой данных.

Я провел пример нагрузочного теста с использованием jmeter и увидел улучшение производительности (без таймаутов и т. д. c) при большом количестве запросов при использовании исправлено отсутствие активных соединений с базой данных. Было большое количество исключений прерывания потока, когда не был предоставлен фиксированный размер пула соединений, и соединения создавались динамически с увеличением числа запросов.

Любое понимание поможет.

...