mr_busy Ответов: 1

Получение тайм-аута ошибки истек.


Привет,

мы разработали приложение в ASP.NET когда несколько пользователей вошли в систему вместе мы получили ошибку

Тайм-аут истек. Время ожидания истекло до получения соединения из пула. Это могло произойти из-за того, что все объединенные соединения были использованы и был достигнут максимальный размер пула

так как же преодолеть эту проблему .нужна помощь.

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

Я попытался лимит бассейн в строку подключения .,зачет по;

Laxmidhar tatwa technologies

сэр пул comnnection имеет предел но пул объектов не имеет предела

mr_busy

не могли бы вы дать фрагмент кода для пула объектов

Dave Kreskowiak

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

Laxmidhar tatwa technologies

Это трудно сказать,не наблюдая за шириной полосы частот, структурой базы данных и подключением

1 Ответов

Рейтинг:
9

OriginalGriff

Вероятно, вы плохо обрабатываете объекты SqlConnection: если вы не закроете и не избавитесь от них, когда закончите с ними, они будут оставаться открытыми до тех пор, пока сборщик мусора не запустится, потому что ваше приложение исчерпает память, или ваше приложение закроется - в зависимости от того, что произойдет раньше. Если вы исчерпаете пул соединений до того, как GC что-либо сделает, или ваше приложение закроется, вы получите эту ошибку.
Самый простой способ обойти это-всегда заключать ваши объекты SqlConnection в using блок:

using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("SELECT Id, description FROM myTable", con))
        {
        using (SqlDataReader reader = cmd.ExecuteReader())
            {
            while (reader.Read())
                {
                int id = (int) reader["Id"];
                string desc = (string) reader["description"];
                Console.WriteLine("ID: {0}\n    {1}", id, desc);
                }
            }
        }
    }
Когда вы это делаете, соединение закрывается и удаляется автоматически, когда переменная выходит за пределы области действия, так что ваши соединения не остаются для GC. Обратите внимание, что объекты SqlCommand и им подобные также являются дефицитными ресурсами и должны рассматриваться таким же образом.