Question

J'utilise AdoNetAppender pour écrire dans une table de base de données SQL Server 2005. J'ai bufferSize défini sur 1 pour que les entrées soient écrites immédiatement.

Mon administrateur de base de données craint que log4net laisse ouverte sa connexion à la base de données. Nous avons environ 50 connexions à la base de données aujourd'hui, mais seulement 22 entrées de journal. Dans plusieurs cas, il existe plusieurs connexions du même client avec des temps de connexion différents.

Il me semble que le regroupement de connexions ne fonctionne pas ou qu'il existe une ressource que je ne libère pas dans le code. Comment devrais-je résoudre ce problème?

Était-ce utile?

La solution

SQL Server Profiler vous montrera tout cela. Créez une application console, enregistrez quelques instructions et vérifiez que les connexions s'ouvrent et se ferment.

En remarque, je vous déconseille de définir la taille de la mémoire tampon sur 1. Pour une application de taille importante (examinons NHibernate), elle peut facilement enregistrer 100 instructions ou plus pour une seule opération (en fonction du niveau de journalisation). ). Cela équivaut à 100 connexions de base de données distinctes par demande et permet de mettre un serveur à genoux.

Une taille de tampon de 5 ou 10 fonctionnera à merveille. Bien sûr, vous risquez de perdre quelques messages de journal, mais dans la plupart des cas, ils seront éventuellement vidés (sauvegarde de la perte d'énergie ou d'une défaillance matérielle).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top