Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / [ADO.NET] Connection pooling. Непонятки какие то. / 5 сообщений из 5, страница 1 из 1
24.07.2003, 15:15
    #32217119
mamba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ADO.NET] Connection pooling. Непонятки какие то.
Имеем Web приложение.
Win2000, SQl Server2000+SP3, .NET Framework 1.0

В коде явно закрываю SqlDataReader, SqlConnection

тест 1.
1. В строке соединениея для ADO.NET Pooling=False
2. Гоняем прикладу переодически поглядывая в SQLServer на sp_who2
3. Соединения к базе данных открываються только на момент исполнения ТSQL комманд, то есть не закрытых соединений нет

тест 2.
1. В строке соединения Max Pool Size=200
2. Гонять прикладу приходиться достаточно долго,
в sp_who2 вижу постоянно увеличивающее количество соединений
3. В момент х получаю сообщение что maximum pool size is reached

Внимание вопрос:
Что бы это значило? Ощушение такое что соединение "не закрываеться" в режиме с пулингом.
Любые идеи, мысли приветствуються

П.С. Мысли типа переставь систему, используй .NET Framework 1.1, M$ Sucks к рассмотрению не принимаються :)
...
Рейтинг: 0 / 0
24.07.2003, 16:56
    #32217279
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ADO.NET] Connection pooling. Непонятки какие то.
Я думаю, просто что-то не закрываете.
...
Рейтинг: 0 / 0
25.07.2003, 15:31
    #32218412
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ADO.NET] Connection pooling. Непонятки какие то.
Пуллинг - это как раз и есть незакрывание соединения в течении какого-то времени (обычно 1 минута)
...
Рейтинг: 0 / 0
28.07.2003, 19:15
    #32219917
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ADO.NET] Connection pooling. Непонятки какие то.
2Dankov
Вы немножко путаете.
1 минута - это незакрытие оригинального коннекта на тот случай, если он подойдёт какому-нибуть виртуальному.

А здесь ситуация другая. Объект коннекта создаётся, используется для одного вызова и уничтожается (т.е. уничтожается ссылка).
Объект переходит сборщику мусора, а тот уже через какое-то время освобождает ресурсы. Если он освобождает их через минуту, то при всего 1000 вызовах/сек за минуту накопится 60000 коннектов к БД. Это много.

Нужно просто делать conn.Close(), как и рекомендует M$ для освобождения такого рода ресурсов - коннектов к БД, файлов, и т.д.
...
Рейтинг: 0 / 0
04.08.2003, 12:39
    #32226228
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[ADO.NET] Connection pooling. Непонятки какие то.
Я ничего не путаю. После conn.Close() коннект переходит в пул на одну минуту и ждет открытия соединения еще кем-нибудь с той же строкой соединения. Если такое соединение открывается, коннект из пула передуется новому соединению. Если нет, то коннект в пуле закроется по истечении минуты. Все это время нахождения в пуле коннект остается открытым.
Это поведение можно запретить, просто запретив пуллинг. Это достигается помещением в строку соединения параметра "Pooling=false". Если так задать, то conn.Close() действительно тут же будет закрывать коннект, а не перемещать его в пул.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / [ADO.NET] Connection pooling. Непонятки какие то. / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]