/ / Comment surveiller où vont mes connexions? - java, tomcat, jdbc, pool de connexions

Comment surveiller où vont mes connexions? - java, tomcat, jdbc, pool de connexions

Je lance une application tomcat, utilise jndipool de connexion. À un moment donné, le pool de connexions s’arrête pour donner des connexions et l’application s’arrête Semble parce que du code reçoit la connexion et ne le renvoie pas au pool. Comment puis-je surveiller - de quel code s'agit-il? Plus commun - je veux voir ce que toutes les connexions font en ce moment.

Je ne peux pas changer d'application. Mais je peux ajuster Tomcat, peut-être ajouter quelques intercepteurs.

Réponses:

1 pour la réponse № 1

La plupart des implémentations de pool de connexion peuvent êtreconfiguré pour détecter les connexions qui ne sont pas renvoyées au pool. Par exemple. pour le pool de connexions JDBC de Tomcat, il existe différentes options de configuration pour les "connexions abandonnées" (connexions pour lesquelles le bail a expiré). Si vous recherchez "Abandonné" le ce page Web, vous trouverez les options:

  • supprimerAbandonné
  • supprimerAbandonedTimeout
  • logAbandonné
  • suspectTempsout

Comme indiqué sur la page Web, ces paramètres ajouteront un peu de charge, mais au moins votre application ne sera pas bloquée. Lors du test de votre application, définissez une valeur faible sur removeAbandonedTimeout et une faible valeur pour maxActive afin que vous puissiez attraper les connexions non retournées plus tôt.


0 pour la réponse № 2

Je n'utilise jamais l'API de pool de connexions elle-même, je l'enveloppe toujours dans une aide.

De cette façon, je peux le faire dans l’aide:

private Exception created = (0 == 1) ? new Exception() : null;

Lorsque je rencontre des problèmes comme le vôtre, je ne change que d’un personnage (0 -> 1) pour avoir une trace de la pile de ceux qui ont créé cette instance dans mon débogueur.