[JAVA] Vérifiez comment définir le délai d'expiration lors de la connexion avec Spring + HikariCP + MySQL et de l'exécution de SQL

Chose que tu veux faire

Vérifiez comment définir le délai d'expiration lors de la connexion à Spring + HikariCP + MySQL et de l'exécution de SQL.

environnement

Un environnement qui passe à l'action

Relations de printemps: 5.0.9 HikariCP:2.7.9 MySQL:5.7

Time out lors de la connexion à DB

Éléments à définir (lors de la description des paramètres DataSource en Java)

Défini avec setConnectionTimeout () pour une instance de HikariDatasource.

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

Éléments à définir (lors de l'utilisation du paramètre automatique de Spring-boot)

↓ paramétrage de application.properties

spring.datasource.hikari.connection-timeout=Délai d'expiration (millisecondes)

Délai d'attente si le résultat SQL n'est pas renvoyé après la connexion à la base de données

Ajoutez le paramètre socketTimeout à l'URL JDBC.

Éléments à définir (lors de la description des paramètres DataSource en Java)

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

Éléments à définir (lors de l'utilisation du paramètre automatique de Spring-boot)

spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&socketTimeout=Délai d'expiration (millisecondes)

Essaie

Voir ↓ pour savoir comment reproduire le retard du réseau dans un environnement Windows. Comment reproduire localement le retard du réseau dans Windows

Le code écrit sous forme d'exemple est Délai de connexion: 250 ms Délai de communication après connexion: 10 ms Par conséquent, vérifiez que l'exception apparaît comme prévu en suivant la procédure ci-dessous.

Voici les étapes.

  1. Avant que la connexion ne soit établie, si vous définissez le délai sur 400 ms et exécutez un processus qui implique l'exécution de SQL, vous pouvez voir le délai d'expiration dans l'exception qui est générée. (** Délai de connection dépassé **)
  2. Ensuite, arrêtez une fois l'occurrence du délai et exécutez le processus qui implique l'exécution de SQL (connectez le pool de connexions à la base de données).
  3. Après cela, si vous définissez le délai sur 100 ms , démarrez le délai et exécutez le processus qui implique l'exécution de SQL, vous pouvez voir le délai dans l'exception de sortie. (* Timeout lorsque SQL n'est pas retourné après la connexion **)

Pourtant,,

En regardant l'heure d'exécution du journal, le journal des exceptions n'apparaît pas en fonction de la milliseconde spécifiée. Je pense que la valeur de réglage du délai et la valeur de réglage du délai expirent comme prévu, donc je pense que le jugement du délai lui-même peut être fait, mais ... Un mystère.

Recommended Posts

Vérifiez comment définir le délai d'expiration lors de la connexion avec Spring + HikariCP + MySQL et de l'exécution de SQL
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Comment vérifier avant d'envoyer un message au serveur avec Spring Integration
Spring Boot - Comment définir le délai d'expiration de la session
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Comment connecter MySQL / MariaDB + HikariCP avec Liferay 7 / DXP
Comment définir une limite de relance pour sidekiq et notifier les files d'attente mortes avec Slack
Comment définir des variables d'environnement lors de l'utilisation de Payjp avec Rails
Comment régler chrony lorsque le temps change dans CentOS7
Comment gérer l'erreur ERREUR: lors de l'exécution de gem ... (Gem :: FilePermissionError)
Comment vérifier l'extension et la taille des fichiers téléchargés
Emplacement de la définition de la méthode Résumé de la vérification Lorsque défini dans le projet et Rails / Gem
Définir le profil Spring lors de l'exécution de la tâche bootRun avec Spring Boot Gradle Plugin
Comment définir l'adresse IP et le nom d'hôte de CentOS8
[Rails] Comment introduire le kaminari avec Slim et changer le design
Comment définir et utiliser un profil avec une configuration basée sur des annotations dans le framework Spring
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
[Note] Comment redémarrer le conteneur Windows configuré avec docker-compose
Comment configurer Spring Boot + PostgreSQL
Comment accéder directement à Socket avec la fonction TCP de Spring Integration
Exécutable serveur avec Spring gradle Comment créer JAR et WAR
Comment gérer FATAL: le rôle "admin0" n'existe pas et PG :: ConnectionBad: FATAL: le rôle "admin0" n'existe pas lors de l'exécution des rails db: create
Comment configurer et utiliser kapt
[Java] Comment régler la date sur 00:00:00
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment trouver les dizaines et les unités
Une erreur s'est produite lors de l'exécution d'une fonction avec CURSOR défini dans le paramètre OUT de MyBatis dans PostgreSQL.
Comment faire en sorte que la chaîne de requête émette réellement lors de l'utilisation de PreparedStatement dans JDBC
Comment utiliser ToolBar avec la super marge Part1 Définir les caractères et changer les couleurs
Comment vérifier la dernière version de io.spring.platform pour l'écriture dans pom.xml de Spring (STS)
Comment définir quand "Le constructeur Empty () n'est pas visible" se produit dans junit
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Comment configurer la vision par ordinateur pour le suivi des images et des vidéos avec TrackingJs
Comment partager côté hôte (Windows) et côté invité (CentOS 7) avec VirtualBox
Comment vérifier le journal dans le conteneur Docker
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment effacer la base de données lors de la recréation de l'application
[Java] (pour MacOS) Méthode de définition du chemin de classe
Comment configurer et utiliser jEnv (Mac)
Comment créer une API avec GraphQL et Rails
Comment trouver le score total et le score moyen
[Spring Boot] Comment se référer au fichier de propriétés
Comment vérifier les commandes Rails dans le terminal
Comment supprimer le tweet associé à l'utilisateur lorsque vous le supprimez en même temps
Tu comprends vraiment? Comment vérifier la bibliothèque et la licence utilisées par l'application
N choses à garder à l'esprit lorsque vous lisez «Introduction au printemps» et «Introduction au printemps» à l'ère Reiwa
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Comment identifier la cause lorsque le GC se produit fréquemment et que l'utilisation du processeur est élevée