2016-03-03 6 views
1

За последние два дня я пытался разрешить следующую ошибку:течи соединения в Entity Framework

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

Насколько я проверил все наши DbContext запросов обернуты using, и еще похоже, что он не устраивается или что-то еще.

Есть ли способ определить, является ли веб-приложение утечкой соединения? Ir что-то еще я могу попробовать ?!

Я попытался увеличить тайм-ауты в SQL Server + увеличить размер пула от значения по умолчанию от 100 до 200 в качестве временного результата, но это не помогло, и это не те решения, которые я хочу.

Любые предложения помогут.

+0

Вы используете транзакции? –

+0

Вы правильно разместили контекст? –

+0

Danny dbcontext завернут в использование, есть ли что-нибудь еще, что я должен делать ?! –

ответ

0

У меня есть случай, похожий на ваш. Наша старая версия проекта (все еще использующая EF4) течет соединения, когда мой код НЕ касается контекста. Создается контекст, выделено новое соединение, но в Dispose() контекст, похоже, не возвращает свое соединение.

Если я просто выполняю один маленький запрос (.First() в любой случайной таблице) в этом недоиспользуемом контексте, ситуация улучшается.

В более поздней ветке моего проекта используется EF6. Этот код работает нормально.

Что помогло мне отследить это, был SQL Profiler. Я также знал примерно то, что делал мой проблемный пользователь, поэтому я повторил его шаги и следил за столбкой SPID Profiler. Затем я шагнул через части кода, пока не получил одно из призрачных соединений, которые я преследовал.

(Я наткнулся на это сейчас, поэтому у меня не было времени на дальнейшие расследования)

 Смежные вопросы

  • Нет связанных вопросов^_^