Red de conocimiento informático - Material del sitio web - Cómo detectar fugas de conexión a la base de datos

Cómo detectar fugas de conexión a la base de datos

1. Busque según el registro;

Primero, revise el registro del sistema para encontrar el momento en que el grupo de conexiones se desborda. Luego, correspondiente a este tiempo, busque las operaciones en curso del usuario.

Este método es adecuado para limitar artificialmente el alcance del código que puede filtrar conexiones sin iniciar ningún programa o proceso de monitoreo ni cambiar la configuración del sistema.

2. Utilice la función de utilidad del propio grupo de conexiones; como C3P0, los siguientes son los dos parámetros que deben usarse (recomendado):

unreturnedConnectionTimeout

Valor predeterminado: 0

Segundos. Si se establece, si una aplicación verifica pero luego no logra registrar [es decir, cerrar()] una conexión dentro del período de tiempo especificado, el grupo destruirá sin ceremonias. () la Conexión. Esto permite que las aplicaciones con fugas de Conexión ocasionales sobrevivan, en lugar de agotar eventualmente el grupo de Conexión. Y eso es una pena. Cero significa que no hay tiempo de espera, se espera que las aplicaciones cierren () sus propias Conexiones. Si se establece un valor cero, debe ser un valor más largo que el que cualquier conexión debería verificarse razonablemente. De lo contrario, el grupo ocasionalmente eliminará las conexiones en uso activo, lo cual es básicamente una mala idea, pero es una opción comúnmente solicitada. Característica Repare sus aplicaciones $!@ para que no pierdan conexiones. ¡Utilice esto temporalmente en combinación con debugUnreturnedConnectionStackTraces para descubrir dónde se están desprotegiendo las conexiones que no regresan al grupo!

debugUnreturnedConnectionStackTraces

Valor predeterminado: falso

Si es verdadero y si unreturnedConnectionTimeout se establece en un valor positivo, entonces el grupo capturará el seguimiento de la pila (a través de una excepción) de todas las comprobaciones de conexión. y los seguimientos de la pila se imprimirán cuando se agote el tiempo de espera de las conexiones no devueltas. Esto está destinado a depurar aplicaciones.

h Pérdidas de conexión, es decir, aplicaciones que ocasionalmente no devuelven conexiones, lo que provoca un crecimiento del grupo y, finalmente, su agotamiento (cuando el grupo alcanza maxPoolSize con todas las conexiones desprotegidas y perdidas). Este parámetro solo debe configurarse durante la depuración, como captura de la conexión. El seguimiento de la pila ralentizará cada comprobación de conexión.

Cuando usamos estos dos parámetros al mismo tiempo, por ejemplo, unreturnedConnectionTimeout se establece en 5 segundos y debugUnreturnedConnectionStackTraces se establece en verdadero. Luego, cuando una conexión se desconecta durante 5 segundos y no se ha registrado, el grupo de conexiones generará una pila de errores. Con la pila, podemos identificar la ubicación del código donde ocurre el problema.

Por supuesto, los parámetros de este método no son exclusivos de C3P0. Debería haber parámetros similares en otras configuraciones del grupo de conexiones.