log4net открытая база данных соединений
-
04-07-2019 - |
Вопрос
Я использую AdoNetAppender для записи в таблицу базы данных SQL Server 2005. У меня установлено значение bufferSize, равное 1, поэтому записи записываются немедленно.
Мой администратор баз данных обеспокоен тем, что log4net оставляет соединение с базой данных открытым. Сегодня у нас ~ 50 подключений к базе данных, но только 22 записи в журнале. В нескольких случаях существует несколько подключений от одного и того же клиента с разным временем входа в систему.
Мне кажется, что пул соединений не работает или есть ресурс, который я не освобождаю в коде. Как мне решить эту проблему? Р>
Решение
SQL Server Profiler покажет вам все это. Создайте консольное приложение, зарегистрируйте несколько операторов и убедитесь, что соединения открываются и закрываются.
В качестве примечания я бы рекомендовал не устанавливать размер буфера в 1. Для приложения значительного размера (давайте рассмотрим NHibernate) оно может легко регистрировать 100 или более операторов для одной операции (в зависимости от уровня журнала). ). Это равняется 100 отдельным подключениям к базе данных на запрос и может легко поставить сервер на колени.
Размер буфера 5 или 10 будет творить чудеса. Конечно, у вас есть риск потери нескольких сообщений журнала, но в большинстве случаев они в конечном итоге будут сброшены (за исключением потери питания или аппаратного сбоя).