[JAVA] Überprüfen Sie, wie Sie das Zeitlimit festlegen, wenn Sie eine Verbindung zu Spring + HikariCP + MySQL herstellen und SQL ausführen

Was du machen willst

Überprüfen Sie, wie Sie das Zeitlimit festlegen, wenn Sie eine Verbindung zu Spring + HikariCP + MySQL herstellen und SQL ausführen.

Umgebung

Eine Umgebung, die Maßnahmen ergreift

Frühlingsbeziehungen: 5.0.9 HikariCP:2.7.9 MySQL:5.7

Zeitüberschreitung beim Herstellen einer Verbindung zur Datenbank

Zu setzende Elemente (bei der Beschreibung der DataSource-Einstellungen in Java)

Mit setConnectionTimeout () für eine Instanz von HikariDatasource festlegen.

@Bean
HikariDataSource datasource() {
    
    HikariDataSource ds = new HikariDataSource();
    ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=10");
    ds.setConnectionTimeout(250); //★ Hier
    ds.setUsername("user");
    ds.setPassword("password");
    return ds;
}

Zu setzende Elemente (bei Verwendung der automatischen Einstellung von Spring-Boot)

↓ Einstellung der Anwendungseigenschaften

spring.datasource.hikari.connection-timeout=Zeitüberschreitung (Millisekunden)

Zeitüberschreitung, wenn das SQL-Ergebnis nach der DB-Verbindung nicht zurückgegeben wird

Fügen Sie der JDBC-URL den Parameter socketTimeout hinzu.

Zu setzende Elemente (bei der Beschreibung der DataSource-Einstellungen in Java)

@Bean
HikariDataSource datasource() {
    
    HikariDataSource ds = new HikariDataSource();
    ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=10"); //★ Hier
    ds.setConnectionTimeout(250);
    ds.setUsername("user");
    ds.setPassword("password");
    return ds;
}

Zu setzende Elemente (bei Verwendung der automatischen Einstellung von Spring-Boot)

spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=Zeitüberschreitung (Millisekunden)

Ausprobieren

Unter ↓ finden Sie Informationen zum Reproduzieren der Netzwerkverzögerung in einer Windows-Umgebung. So reproduzieren Sie die Netzwerkverzögerung lokal in Windows

Der als Beispiel geschriebene Code lautet Verbindungszeitlimit: 250 ms Kommunikationszeitlimit nach Verbindung: 10 ms Überprüfen Sie daher, ob die Ausnahme wie erwartet angezeigt wird, indem Sie die folgenden Schritte ausführen.

Unten sind die Schritte.

  1. Wenn Sie vor dem Herstellen der Verbindung die Verzögerung auf 400 ms festlegen und einen Prozess ausführen, bei dem SQL ausgeführt wird, wird das Zeitlimit in der ausgegebenen Ausnahme angezeigt. (** Verbindungszeitüberschreitung **)
  2. Beenden Sie als Nächstes das Auftreten der Verzögerung einmal und führen Sie den Prozess aus, bei dem SQL ausgeführt wird (verbinden Sie den Verbindungspool mit der Datenbank).
  3. Wenn Sie danach die Verzögerung auf 100 ms * einstellen, die Verzögerung starten und den Prozess ausführen, bei dem SQL ausgeführt wird, wird das Zeitlimit in der Ausgabeausnahme angezeigt. (** Zeitüberschreitung, wenn SQL nach der Verbindung nicht zurückgegeben wird **)

Jedoch,,

In Bezug auf die Protokollausführungszeit wird das Ausnahmeprotokoll nicht gemäß der angegebenen Millisekunde angezeigt. Ich denke, dass der Timeout-Einstellwert und der Delay-Einstellwert wie beabsichtigt ablaufen, also denke ich, dass das Timeout-Urteil selbst durchgeführt werden kann, aber ... Ein Geheimnis.

Recommended Posts

Überprüfen Sie, wie Sie das Zeitlimit festlegen, wenn Sie eine Verbindung zu Spring + HikariCP + MySQL herstellen und SQL ausführen
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
So überprüfen Sie, bevor Sie mit Spring Integration eine Nachricht an den Server senden
Spring Boot - So stellen Sie das Sitzungszeitlimit ein
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
So verbinden Sie MySQL / MariaDB + HikariCP mit Liferay 7 / DXP
So legen Sie ein Wiederholungslimit für Sidekiq fest und benachrichtigen tote Warteschlangen mit Slack
Festlegen von Umgebungsvariablen bei Verwendung von Payjp mit Rails
So stellen Sie die Chronik ein, wenn sich die Zeit in CentOS7 verschiebt
Umgang mit dem Fehler FEHLER: Während der Ausführung von gem ... (Gem :: FilePermissionError)
So überprüfen Sie die Erweiterung und Größe der hochgeladenen Dateien
Speicherort der Methodendefinition Zusammenfassung der zu überprüfenden Informationen Wenn im Projekt und in Rails / Gem definiert
Legen Sie das Spring-Profil fest, wenn Sie die bootRun-Task mit dem Spring Boot Gradle Plugin ausführen
So legen Sie die IP-Adresse und den Hostnamen von CentOS8 fest
[Rails] Wie man Kaminari mit Slim einführt und das Design ändert
So legen Sie ein Profil mit annotationsbasierter Konfiguration im Spring-Framework fest und verwenden es
[jOOQ] Wie in der WHERE / AND / OR-Klausel WANN FALLEN
[Hinweis] So starten Sie den mit Docker-Compose eingerichteten Windows-Container neu
So stellen Sie Spring Boot + PostgreSQL ein
So greifen Sie mit der TCP-Funktion von Spring Integration direkt auf Socket zu
Server mit Spring Gradle ausführbar So erstellen Sie JAR und WAR
Umgang mit FATAL: Rolle "admin0" existiert nicht und PG :: ConnectionBad: FATAL: Rolle "admin0" existiert nicht, wenn Rails ausgeführt werden db: create
So richten Sie kapt ein und verwenden es
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
Wie man die Zehner und Einsen findet
Beim Ausführen einer Funktion in PostgreSQL mit dem Parameter OUT von MyBatis auf CURSOR ist ein Fehler aufgetreten.
So wird die Abfragezeichenfolge bei Verwendung von PreparedStatement in JDBC tatsächlich ausgegeben
Verwendung der Symbolleiste mit Superrand Teil 1 Stellen Sie Zeichen ein und ändern Sie die Farben
So überprüfen Sie die neueste Version von io.spring.platform für das Schreiben in pom.xml von Spring (STS)
Festlegen, wann in junit "Der Konstruktor Empty () ist nicht sichtbar" auftritt
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
So richten Sie Computer Vision für die Verfolgung von Bildern und Videos mit TrackingJs ein
Freigeben auf der Hostseite (Windows) und der Gastseite (CentOS 7) mit VirtualBox
So überprüfen Sie das Protokoll im Docker-Container
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
So löschen Sie die Datenbank beim Neuerstellen der App
[Java] (für MacOS) Methode zur Einstellung des Klassenpfads
So richten Sie jEnv (Mac) ein und bedienen es
So erstellen Sie eine API mit GraphQL und Rails
So finden Sie die Gesamtpunktzahl und die Durchschnittspunktzahl
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
So überprüfen Sie Rails-Befehle im Terminal
So löschen Sie den dem Benutzer zugeordneten Tweet, wenn Sie ihn gleichzeitig löschen
Verstehst du wirklich So überprüfen Sie die von der App verwendete Bibliothek und Lizenz
N Dinge, die Sie beim Lesen von "Einführung in den Frühling" und "Einführung in den Frühling" in der Reiwa-Ära beachten sollten
[Grobe Erklärung] So trennen Sie den Betrieb der Produktionsumgebung und der Entwicklungsumgebung mit Rails
[Rails] Lösung, wenn bei Verwendung von Capybara mit Rspec der Fehler "undefined method` visit '" angezeigt wird
So identifizieren Sie die Ursache, wenn GC häufig auftritt und die CPU-Auslastung hoch ist