Domanda

Sto usando AdoNetAppender per scrivere su una tabella di database di SQL Server 2005. Bufferize è impostato su 1 in modo che le voci vengano scritte immediatamente.

Il mio DBA è preoccupato che log4net lasci aperta la sua connessione al database. Oggi abbiamo circa 50 connessioni al database ma solo 22 voci di registro. In diversi casi esistono più connessioni dallo stesso client con tempi di accesso diversi.

Mi sembra che il pool di connessioni non funzioni o che ci sia una risorsa che non sto rilasciando nel codice. Come devo risolvere questo?

È stato utile?

Soluzione

SQL Server Profiler ti mostrerà tutto questo. Crea un'app console, registra alcune istruzioni e verifica che le connessioni si aprano e si chiudano.

Come nota a margine, ti consiglio di non impostare la dimensione del buffer su 1. Per un'app di dimensioni significative (diamo un'occhiata a NHibernate) può facilmente registrare 100 o più istruzioni per una singola operazione (a seconda del livello di registro ). Ciò equivale a 100 connessioni database separate per richiesta e può facilmente mettere in ginocchio un server.

Una dimensione del buffer di 5 o 10 farà miracoli. Sicuramente hai il rischio di perdere alcuni messaggi di log, ma nella maggior parte dei casi verranno eliminati (risparmia perdita di energia o guasti hardware).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top