Вопрос пула соединений ASP.NET - PullRequest
1 голос
/ 29 апреля 2010

Использует ли одна и та же строка подключения на двух разных физических серверах, на которых размещаются разные веб-приложения, которые взаимодействуют с одной и той же базой данных, соединения из одного и того же пула соединений? Или пул соединений ограничен на уровне приложения?

Я спрашиваю, потому что я унаследовал 7-летнее веб-приложение .NET 1.1, изобилующее встроенным SQL, незакрытыми и нераспределенными объектами подключения SQL и объектами чтения данных. Недавно мне было поручено написать небольшое веб-приложение, которое размещено на другом сервере и взаимодействует с той же базой данных, и поэтому использовало ту же строку подключения к базе данных. Я создал объект LINQ для чтения и записи одной таблицы, требуемой приложением. Теперь оригинальное приложение .NET 1.1 вызывает исключения вроде

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

Возможно, они не связаны, но хотели узнать ваше мнение, чтобы убедиться, что я охватил все мои базы.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 29 апреля 2010

Невозможно объединить соединения между двумя отдельными машинами. Однако ваш SQL Server будет иметь ограничение на общее количество подключений.

Эта ошибка, скорее всего, возникает из-за того, что приложение не возвращает соединения в пул соединений. Это может произойти из-за неправильной утилизации соединения. Это может произойти из-за плохого кода (использует ли он блок using или попытка catch, наконец?) Или если использование SQLDataReader может привести к тому, что соединение останется открытым после выхода кода для выполнения SQL.

0 голосов
/ 29 апреля 2010

Пулы соединений хранятся в вашем пуле приложений, поэтому отдельная машина не может быть украдена из отдельных пулов приложений. Посмотрите здесь для некоторой информации о пуле соединений. Я бы также порекомендовал шлепать счетчики производительности, см. нижнюю часть этой статьи , чтобы увидеть, что там происходит.

Также может потребоваться проверить максимальное количество соединений на SQL Server. В студии управления Щелкните правой кнопкой мыши по имени сервера -> Свойства -> Подключения

ищите «Максимальное количество одновременных подключений (0 = неограничено)»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...