истек срок ожидания все пулы подключений были использованы и достигнут максимальный размер пула - PullRequest
1 голос
/ 09 октября 2011

Через некоторое время появляется следующая страница ошибки.

Что я могу сделать, чтобы предотвратить это?

У меня большое количество пользователей, и приложение использует Oracle 11g. Пожалуйста, предложите мне размер пула, чтобы его можно было увеличить по умолчанию. Максимальный размер пула - 100.

Я проверил все соединения правильно закрыты. Я использую OracleDataReader и Datatable в своем приложении. Метод, который я использую, выглядит так:

 public OracleDataReader BidNoIncr()
    {
        OracleConnection objOracleConnection = new OracleConnection(objDBClass.GetConnSring());
        OracleDataReader objDataReader;
        string strQuery = "Select max(BID_NO)+1 as SNumber from HH_BIDS";
        OracleCommand objOracleCommand = new OracleCommand(strQuery, objOracleConnection);
           objOracleConnection.Open();
           objDataReader = objOracleCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);       
            return objDataReader;

Время ожидания истекло. Период ожидания истек до получения подключение из бассейна. Это могло произойти, потому что все объединено соединения использовались, и был достигнут максимальный размер пула. Описание: Произошло необработанное исключение во время выполнения текущего веб-запрос. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации о ошибка и где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: Истекло время ожидания. Период ожидания истек до получения подключения от бассейн. Это могло произойти, потому что все соединения в пуле были в использование и максимальный размер пула были достигнуты.

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

Трассировка стека:

[InvalidOperationException: истекло время ожидания. Период ожидания прошло до получения соединения из пула. Это может иметь произошло, потому что все пулы подключений были использованы и максимальный размер пула был достигнут.]
System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection владение соединением) + 309609
System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection externalConnection, DbConnectionFactory connectionFactory) + 125
System.Data.OracleClient.OracleConnection.Open () + 43
DbClass.GetConnSring () +58 DBViewRec.ViewSalvageItems () + 53
viewsalvageitems.ShowRecords () + 44
viewsalvageitems.Page_Load (Отправитель объекта, EventArgs e) + 5
System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, Объект t, EventArgs e) + 14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, EventArgs e) +35 System.Web.UI.Control.OnLoad (EventArgs e) + 91
System.Web.UI.Control.LoadRecursive () + 74
System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 2207

1 Ответ

3 голосов
/ 09 октября 2011

Как правило, эта ошибка может возникать в следующих ситуациях:

1) У вас очень большое количество пользователей, использующих вашу базу данных одновременно, и у вас заканчиваются свободные соединения.Возможные решения: увеличьте количество разрешенных подключений на вашем сервере и / или (если ваша система является веб-сервером) увеличьте размер пула, указанный в строке подключения к базе данных.

2) В вашей системе плохая логика базы данных и / илиутечка соединения, например, когда открытое соединение не закрывается должным образом позже.Решением для этого будет аудит вашего кода на предмет таких утечек соединений и исправление их путем правильного закрытия соединений все время.

...