проблема пула sqlconnection - PullRequest
       40

проблема пула sqlconnection

0 голосов
/ 08 июня 2011

Привет, у меня есть веб-приложение (asp.net), где мы только начали получать «System.InvalidOperationException: Timeout expired».при попытке установить новое sql-соединение.

Так что я думаю, что где-то в коде соединение создается, но никогда не удаляется, но как мне узнать, где это происходит?к сожалению, большая часть связи с базой данных не использует слой данных, он работает напрямую с типами данных sql ...

Есть ли что-то, что я мог бы включить в web.config, чтобы отслеживать, какие соединения открыты дольше, чем xсекунд, а где они где открылись?

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Хорошо, я нашел способ отследить их, используя

EXEC SP_WHO2
DBCC INPUTBUFFER (SPID)

SP_WHO2 предоставляет вам информацию о соединениях, и с помощью DBCC INPUTBUFFER вы можете узнать, какую команду они выполняли в прошлый раз.

2 голосов
/ 08 июня 2011

найти везде, где используется ваше sqlconnection. Убедитесь, что он находится в блоке using () для его автоматического удаления. К сожалению, в web.config нет ничего встроенного. Вы можете попробовать профилировщик памяти муравьев, чтобы отследить это. Например: http://www.developerfusion.com/review/59466/ants-memory-profiler-51/

1 голос
/ 08 июня 2011

.NET Framework не решит вашу архитектуру и проблемы с журналированием, поэтому вам придется найти проблему самостоятельно.Что может вам помочь:

  • Счетчики производительности могут показать использование пула соединений
  • SQL Server Management Studio может показать используемые соединения, их активность и последний выполненный оператор.В обозревателе объектов выберите сервер и в контекстном меню выберите «Отчеты»> «Стандартные отчеты»> «Активность» xxx

. Другой подход - отключение пула и использование некоторого профилировщика для сбора информации о вашем приложении и отслеживания неразмещенных соединений..

...