Пул соединений контролируется, и параметры передаются в строку соединения, которая в основном содержит следующее:
· Тайм-аут соединения
· Минимальный размер бассейна
· Максимальный размер пула
· Объединение
Если вы видите, что ваше приложение генерирует огромное количество соединений за очень короткий промежуток времени, то сначала вы проверяете свое приложение на наличие открытых соединений и обязательно закрываете их, как только заканчиваете работать с ними. Закрытое соединение не будет фактически закрыто и будет доступно для использования другим запросом к серверу. Специально проверьте ваши объекты DataReader и закройте их, как только они выйдут из контекста. Иногда разработчик использует несколько DataReader во вложенном цикле и закрывает все DataReader в пункте finally. Не делайте этого и попробуйте остановить DataReader, как только вы выйдете из цикла. Да, вы всегда можете снова проверить состояние объекта DataReader в предложении finally, а если не закрыто, вы можете закрыть его.
Теперь проверьте настройку ConnectTimeout до минимума, скажем, за 1 секунду. Это устанавливает срок жизни соединения в пуле, закрытом Приложением, и устанавливает для MaxPoolSize максимальное ограничение вашего сервера. Я думаю, это было бы 100, если бы ни одно другое приложение не было подключено к той же базе данных сервера. Установите значение MinPoolSize равным 5, так как вы установили бы ConnectTimeOut на минимум, и в этом случае, чтобы пул соединений работал эффективно, вам потребуется, чтобы некоторые соединения были всегда доступны.
Попробуйте эти настройки и изменения. Надеюсь, что это сработает к вашему удовлетворению.
Спасибо
Раджив Ранджан Лалл