Sobes.tech
Senior

Hikari Pool z 10 połączeniami, pod obciążeniem otrzymaliśmy 'connections not available'. Co robić?

sobes.tech AI

Odpowiedź od AI

Błąd "connections not available" w HikariCP przy puli 10 połączeń oznacza, że wszystkie dostępne połączenia są zajęte i nowe żądania nie mogą uzyskać połączenia z puli.

Co zrobić:

  • Zwiększyć rozmiar puli (np. zwiększyć maxPoolSize), jeśli obciążenie rzeczywiście wymaga więcej połączeń.
  • Sprawdzić, czy połączenia są poprawnie zamykane (wywołanie metody close() na Connection), w przeciwnym razie pozostają zajęte.
  • Analizować czas życia i czas oczekiwania na połączenia (connectionTimeout), być może trzeba zwiększyć timeout.
  • Optymalizować zapytania i transakcje, aby zajmowały połączenia jak najkrócej.
  • Włączyć logowanie HikariCP, aby wykryć wycieki połączeń (leakDetectionThreshold).

Przykład konfiguracji zwiększającej pulę:

HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(20); // zwiększ pulę do 20
HikariDataSource ds = new HikariDataSource(config);

Ważne jest, aby upewnić się, że baza danych i infrastruktura mogą obsłużyć zwiększoną liczbę połączeń.