Pregunta

Estoy usando AdoNetAppender para escribir en una tabla de base de datos de SQL Server 2005. Tengo bufferSize establecido en 1 para que las entradas se escriban inmediatamente.

A mi DBA le preocupa que log4net deje su conexión de base de datos abierta. Tenemos ~ 50 conexiones a la base de datos hoy, pero solo 22 entradas de registro. En varios casos, hay varias conexiones desde el mismo cliente con diferentes tiempos de inicio de sesión.

Me parece que la agrupación de conexiones no funciona o que hay un recurso que no estoy liberando en el código. ¿Cómo debo solucionar esto?

¿Fue útil?

Solución

El SQL Server Profiler le mostrará todo esto. Cree una aplicación de consola, registre algunas declaraciones y verifique que las conexiones se estén abriendo y cerrando.

Como nota al margen, recomiendo no configurar el tamaño del búfer en 1. Para una aplicación de tamaño significativo (veamos NHibernate), puede registrar fácilmente 100 o más declaraciones para una sola operación (según el nivel de registro) ). Esto equivale a 100 conexiones de base de datos separadas por solicitud y puede hacer que un servidor se ponga de rodillas fácilmente.

Un tamaño de búfer de 5 o 10 hará maravillas. Seguro que corre el riesgo de perder algunos mensajes de registro, pero en la mayoría de los casos, finalmente se vaciarán (ahorre pérdida de energía o falla de hardware).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top