log4net открытая база данных соединений

StackOverflow https://stackoverflow.com/questions/240796

  •  04-07-2019
  •  | 
  •  

Вопрос

Я использую AdoNetAppender для записи в таблицу базы данных SQL Server 2005. У меня установлено значение bufferSize, равное 1, поэтому записи записываются немедленно.

Мой администратор баз данных обеспокоен тем, что log4net оставляет соединение с базой данных открытым. Сегодня у нас ~ 50 подключений к базе данных, но только 22 записи в журнале. В нескольких случаях существует несколько подключений от одного и того же клиента с разным временем входа в систему.

Мне кажется, что пул соединений не работает или есть ресурс, который я не освобождаю в коде. Как мне решить эту проблему?

Это было полезно?

Решение

SQL Server Profiler покажет вам все это. Создайте консольное приложение, зарегистрируйте несколько операторов и убедитесь, что соединения открываются и закрываются.

В качестве примечания я бы рекомендовал не устанавливать размер буфера в 1. Для приложения значительного размера (давайте рассмотрим NHibernate) оно может легко регистрировать 100 или более операторов для одной операции (в зависимости от уровня журнала). ). Это равняется 100 отдельным подключениям к базе данных на запрос и может легко поставить сервер на колени.

Размер буфера 5 или 10 будет творить чудеса. Конечно, у вас есть риск потери нескольких сообщений журнала, но в большинстве случаев они в конечном итоге будут сброшены (за исключением потери питания или аппаратного сбоя).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top