Какой вывод если приложение без пула работает быстрее?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Какой вывод если приложение без пула работает... Expand / Collapse
Автор
Сообщение
17.07.2006 13:21
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
Столкнулся с проблемой. Приложение ASP.NET 1.1 медленно работает с БД SQL 2000. Проверка на скорую руку показала, что при достаточно небольшой нагрузке (1-3 хита в сек.) в пуле скапливается штук 30 соединений и все жутко начинает тормозить, на генерацию страницы в частности идет 5-10, а то и более сек. Попытки поэкспериментировать со строкой соединения, например, Max Pool Size, Connect Timeout ничего хорошего не дали - кол-во соединений в пуле (SP_WHO) они помогали снизить, но время выполнения страниц все равно оставалось на уровне 5-10 сек. Выключение пула Pooling=false; дало снижение времени на генерацию страницы практически до 1 сек.

В чем все-таки может быть проблема при использовании пула?

Дело в том, что приложение (построенное кстати на основе iBuySpy) для генерации страницы использует массу запросов к БД, соединение открывается с каждым запросом, используется в основной массе DataReader, который часто "закрывается" только при помощи CommandBehavior.CloseConnection, что и порождало массу ожидающих соединений в пуле в начале, когда проблема с производительностью была обнаружена. Но получается что частое открытие соединений с БД без использования пула быстрее до 10 раз, чем использование... ???

Сообщ. #900853
17.07.2006 14:52
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Если есть возможность попробуй перекомпилировать сайт под .NET 2.0. Вроде в ADO.NET 1.x есть ошибка которая приводит к такому "зависанию" соединений в пуле. В .NET 2.0 такой проблемы вроде уже нет. Ну и по мере возможности стоит переделать код работы с БД так чтобы вся работа с SqlDataReader обязательно происходила внутри using блока.
Сообщ. #900859
17.07.2006 16:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
возможности перекомпиляции на сегодня нет, приложение сделано на VB.NET. про "зависание" соединений в пуле я знаю, даже пробовал заменить все DataReader на DataSet с тем, чтобы иметь возможность сразу же закрыть соединение с БД и иметь возможность вернуть после этого данные в пользовательские контролы, но это помогло только уменьшить число соединений в пуле, но на производительность почти никак не сказалось, такчто сегодня вернул все взад и с просто выключенным пулом имеем гораздо лучший результат (что странно с моей точки зрения)
Сообщ. #900873
17.07.2006 16:40
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Странно не то слово. У меня впечатление что это просто баг в ADO.NET 1.x.
Сообщ. #900875
17.07.2006 17:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.11.2008 0:08
Сообщ.: 1 298, Visits: 12 501
Сервер случайно не в Debug режиме бежит?
Сообщ. #900885
17.07.2006 21:17
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
а при чем тут баг или не баг? приложение работает, другое дело иногда медленно. ошибки таймаута или конца пула нет. куча соединений в пуле это лишь как одно из следствий включенного пула, и то, что их много еще не значит что это и есть причина. мониторинг perf. counter'ов для БД и сервера ничего особенного не выявил
Сообщ. #900896
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 7:30