Comment puis-je atténuer Connexion fuite déclenchée pour la connexion com.mysql.jdbc.JDBC4Connection@11d08960,

J'ai un mqtt client se demande s'abonnant à partir de sujets,
et puis je lui donner pour threadpool de taille fixe 50.
Im en utilisant hikaricp 2.4.2 pour la DB de mise en commun de bases de données MySQL.

Je suis actuellement en utilisant 2.4.2 et c'est ma configuration

    HikariConfig config = new HikariConfig();
    config.setDataSourceClassName(CLASS_FOR_NAME);
    config.setJdbcUrl(HOST);
    config.setUsername(USER);
    config.setPassword(PASS);
    config.addDataSourceProperty("cachePrepStmts", "true");
    config.addDataSourceProperty("prepStmtCacheSize", "250");
    config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
    config.setLeakDetectionThreshold(TimeUnit.SECONDS.toMillis(30));
    config.setValidationTimeout(TimeUnit.MINUTES.toMillis(1));
    config.setMaximumPoolSize(10);
    config.setMinimumIdle(0);
    config.setMaxLifetime(TimeUnit.MINUTES.toMillis(2)); //120 seconds 
    config.setIdleTimeout(TimeUnit.MINUTES.toMillis(1)); //minutes
    config.setConnectionTimeout(TimeUnit.MINUTES.toMillis(5)); 
    config.setConnectionTestQuery("/* ping */SELECT 1");

Heres le message de log complet :

WARNLOG:

811439 [Hikari femme de ménage (piscine HikariPool-0)] AVERTIR
com.zaxxer.hikari.piscine.ProxyLeakTask - Connexion de détection de fuite
déclenchée pour la connexion com.mysql.jdbc.JDBC4Connection@11d0896, pile
trace suit java.lang.Exception: lien Apparent fuite détectée
au com.hcpdatabase.Source de données.getConnection(source de données.java:69)
au com.la base de données.AccessDatabase.create_alert(AccessDatabase.java:3849)
au com.praticable.StartTaskRunnable2.execute(StartTaskRunnable2.java:78)

Est-ce normal ? dois-je prendre ce?

Eh bien, ça dépend, voulez-vous de fuite de connexions? Pourquoi ne pas nous montrer votre DataSource classe, vous savez celui où la fuite est détectée.
Êtes-vous de fermer votre Connections?
oui, parfois il y a un certain éclat de transactions de 30 de transactions en une seconde, je pense que c'est pourquoi il n'est pas thread-safe(je pense).
J'ai toujours utiliser try{}finally{// fermeture de la connexion ici} tout le temps.
Je n'ai jamais rien dit à propos de la sécurité des threads. Connexion fuites sont une chose très simple, vous découvrez une connexion, mais jamais le fermer (c'est à dire retourner à la piscine). Si vous utilisez try/finally (ou essayer avec des ressources), de manière cohérente partout, il devrait y avoir aucune fuite de connexions.

OriginalL'auteur david | 2015-11-24