Sobes.tech
Senior

Hikari Pool ar 10 savienojumiem, slodzes laikā saņēmām 'connections not available'. Ko darīt?

sobes.tech AI

Atbilde no AI

HikariCP ar 10 savienojumu baseinā kļūda "connections not available" nozīmē, ka visi pieejamie savienojumi ir aizņemti, un jauni pieprasījumi nevar saņemt savienojumu no baseina.

Ko darīt:

  • Palieliniet baseina izmēru (piemēram, palieliniet maxPoolSize), ja slodze patiešām prasa vairāk savienojumu.
  • Pārliecinieties, ka savienojumi tiek pareizi aizvērti (izsaucot close() metodi uz Connection), pretējā gadījumā tie paliek aizņemti.
  • Analizējiet savienojumu dzīves ilgumu un gaidīšanas laiku (connectionTimeout), iespējams, nepieciešams palielināt timeout.
  • Optimizējiet vaicājumus un transakcijas, lai tie aizņemtu savienojumus pēc iespējas īsāku laiku.
  • Iespējojiet HikariCP žurnālo ierakstu, lai atklātu savienojumu noplūdes (leakDetectionThreshold).

Piemērs konfigurācijai, palielinot baseinu:

HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(20); // palielināt līdz 20
HikariDataSource ds = new HikariDataSource(config);

Svarīgi nodrošināt, ka datu bāze un infrastruktūra var apstrādāt palielinātu savienojumu skaitu.