TanmoyDey Ответов: 2

Время ожидания истекло до получения соединения из пула.


System.InvalidOperationException: 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.
   at Devart.Common.DbConnectionFactory.b(DbConnectionBase A_0)
   at Devart.Common.DbConnectionClosed.Open(DbConnectionBase outerConnection)
   at Devart.Common.DbConnectionBase.Open()
   at Devart.Data.Oracle.OracleConnection.Open()
   at EasyCredit.Service.CustomerDetails.CustomerDetailsService.<SaveMailBodyForCasaVR>d__104.MoveNext()
--------------------------------------------------------------   at Devart.Common.DbConnectionFactory.b(DbConnectionBase A_0)
   at Devart.Common.DbConnectionClosed.Open(DbConnectionBase outerConnection)
   at Devart.Common.DbConnectionBase.Open()
   at Devart.Data.Oracle.OracleConnection.Open()
   at EasyCredit.Service.CustomerDetails.CustomerDetailsService.<SaveMailBodyForCasaVR>d__104.MoveNext()


Что я уже пробовал:

Getting this exception in the project. I have given 300 pool size in the web.config but still getting the exception of connection from the pool

F-ES Sitecore

Если у вас нет длительных процессов, просто убедитесь, что вы избавляетесь от соединений, когда используете их.

ZurdoDev

То, что они сказали. ^

2 Ответов

Рейтинг:
17

Dave Kreskowiak

Наиболее распространенной причиной этого является неправильное удаление объекта подключения, Когда вы закончите его использовать. Шаблон использования базы данных заключается в том, чтобы создать и открыть ее как можно позже, выполнить работу с базой данных, а затем закрыть и удалить соединение как можно раньше.

Если у вас есть классы, которые открывают соединение для использования в любом месте класса, это плохо. Потребители этих классов обычно не вызывают Dispose для них, а сами классы должным образом не закрывают и не удаляют соединения, оставляя их открытыми на время существования экземпляра класса. Когда ваши экземпляры выходят за пределы области действия, это не означает, что они избавились от используемых ресурсов. Они могут болтаться довольно долго, захватывая ресурсы, такие как соединения с базой данных.


Рейтинг:
11

Patrice T

Сообщение об ошибке сообщает вам, почему ваше приложение потерпело крах.
Теперь вам нужно добавить код для отслеживания того, что происходит в пуле.
Я бы регистрировал все запросы и релизы пула с указанием времени работы и доступности в пуле.