Default maximumPoolSize für HikariCP

Lesezeit: 3 Minuten

Benutzeravatar von Hari
Hari

Welche Standardgröße des Verbindungspools stellt Spring Boot HikariCP bereit, wenn der Container geladen wird?

Natürlich verwende ich die folgenden Eigenschaften, um die maximale CP-Größe einzurichten, aber ich habe mich gefragt, was die Standard-CP-Größe ist, wenn wir in der Datei „application.properties“ keine Zahl angeben.

spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=20
spring.datasource.hikari.idleTimeout=30000
spring.datasource.hikari.poolName=SpringBootJPAHikariCP
spring.datasource.hikari.maxLifetime=2000000
spring.datasource.hikari.connectionTimeout=30000

Und wenn ich eine maximale Poolgröße eingebe application.properties als 100 und ich verwende nur 20, wirkt sich das auf meine Anwendungsleistung aus?

  • Sehen baeldung.com/spring-boot-hikari für einige Details

    – Wim Deblauwe

    6. März 2019 um 15:30 Uhr

  • Es wäre auch toll zu wissen, warum der Aktor nicht die Standardwerte unter Aktor/Umgebung anzeigt. Hier gefragt stackoverflow.com/questions/63358741/…

    – ka3ak

    11. August 2020 um 13:10 Uhr

maximalePoolSize

Standard: 10

Die HicariCP-Dokumentation enthält Standardeigenschaften:
https://github.com/brettwooldridge/HikariCP

Lesen Sie hier mehr über die Poolgröße:
Maximale Größe des Verbindungspools

  • Vielen Dank, und was ist die maximale Anzahl von Verbindungspools, die HikariCP verarbeitet? basiert es auf JVM-Speicher?

    – Hari

    7. März 2019 um 15:18 Uhr


Bezüglich der maximalen Poolgröße zum Beispiel PostgreSQL empfiehlt folgende Formel:

pool_size = ((core_count * 2) + effective_spindle_count)
  • core_count ist die Anzahl der CPU-Kerne
  • effective_spindle_count ist die Anzahl der Festplatten in einem RAID

Aber laut diesen Dokumenten:

Wir glauben jedoch, dass es weitgehend datenbankübergreifend anwendbar sein wird.

Das bedeutet, dass diese Formel im Allgemeinen auf andere Datenbanken anwendbar ist.

Auch zum Beispiel über Oracle Sie können diesen Artikel lesen und das Video ansehen

Die Formel, die sich seit Jahren bei vielen Benchmarks bewährt hat, lautet, dass für einen optimalen Durchsatz die Anzahl der aktiven Verbindungen irgendwo in der Nähe liegen sollte

Verbindungen = ((Kernanzahl * 2) + effektive_Spindelanzahl).

Die Anzahl der Kerne sollte keine HT-Threads enthalten, auch wenn Hyperthreading aktiviert ist. Die effektive Spindelanzahl ist null, wenn der aktive Datensatz vollständig zwischengespeichert ist, und nähert sich der tatsächlichen Anzahl von Spindeln, wenn die Cache-Trefferrate fällt. … Bisher gibt es noch keine Analyse, wie gut die Formel mit SSDs funktioniert.

Die Berechnung der Poolgröße zur Vermeidung von Deadlocks ist eine ziemlich einfache Formel für die Ressourcenzuweisung:

pool size = Tn x (Cm - 1) + 1

Wo,

  • Tn ist die maximale Anzahl von Threads
  • Cm ist die maximale Anzahl gleichzeitiger Verbindungen, die von einem einzelnen Thread gehalten werden.

Stellen Sie sich beispielsweise drei Threads (Tn=3) vor, von denen jeder vier Verbindungen benötigt, um eine Aufgabe auszuführen (Cm=4). Die Poolgröße, die erforderlich ist, um sicherzustellen, dass ein Deadlock niemals möglich ist, ist:

pool size = 3 x (4 - 1) + 1 = 10

Ein weiteres Beispiel: Sie haben maximal acht Threads (Tn=8), von denen jeder drei Verbindungen benötigt, um eine Aufgabe auszuführen (Cm=3). Die Poolgröße, die erforderlich ist, um sicherzustellen, dass ein Deadlock niemals möglich ist, ist:

pool size = 8 x (3 - 1) + 1 = 17

Dies ist nicht unbedingt die optimale Poolgröße, aber das Minimum, das erforderlich ist, um Deadlocks zu vermeiden.

In einigen Umgebungen kann die Verwendung eines JTA (Java Transaction Manager) die Anzahl der erforderlichen Verbindungen drastisch reduzieren, indem dieselbe Verbindung von getConnection() an einen Thread zurückgegeben wird, der bereits eine Verbindung in der aktuellen Transaktion enthält.

Wir sind immer wieder erstaunt über die internen Webanwendungen, denen wir begegnet sind, mit einigen Dutzend Front-End-Benutzern, die regelmäßige Aktivitäten ausführen, und einem Verbindungspool von 100 Verbindungen. Stellen Sie Ihre Datenbank nicht übermäßig bereit.

1449660cookie-checkDefault maximumPoolSize für HikariCP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy