Управление пулом соединений
Я разрабатываю веб-сервис с высокой нагрузкой, который обеспечит максимально быстрый отклик. Служба должна поддерживать несколько соединений с различными базами данных для повышения производительности. Я предлагаю использовать пул соединений для этого. Могут быть проблемы с подключением к БД, потому что у нас много удаленного доступа к БД через VPN. Как я уже сказал, сервис должен сохранять связь как можно дольше.
Что такое алгоритм управления пулом соединений?
У меня есть строка подключения: Код:
User Id=inet;Password=somePassw0rd;Data Source=TEST11;Min Pool Size=5;Max Pool Size=15;Pooling=True
Затем я просто открываю и закрываю соединение в своем коде. Вот и все.
На данный момент все ок. На стороне БД пять сессий. Поэтому я бы убил сеанс, чтобы смоделировать проблемы с подключением. И в некоторых случаях соединение будет восстановлено диспетчером пула, а в некоторых - нет.
Если я убью все пять соединений, они никогда не будут восстановлены обратно.
Как мне настроить диспетчер пула? Какие-либо настройки продолжительности между проверками соединений с БД?
я использовал validate connection=true;
кажется, что он работает нормально для меня, но это потребует некоторых усилий, если потребуется переподключение к БД, и, следовательно, было бы более эффективно иметь и без того хорошее соединение.
Я использовал компонент devArt dotConnect для Oracle. Заранее спасибо!
1 ответ
Я не уверен, что именно вы ищете, но это может быть полезно: пулы автоматически очищаются, если соединение какое-то время простаивает или закрывается сервером. Однако вы можете принудительно очистить пул, используя методы OracleConnection ClearPool или ClearAllPools (эти методы обычно существуют в большинстве поставщиков ADO.NET, и это не является обязательным).
Обратите внимание, что если вы используете Oracle 11g, DotConnect также поддерживает Oracle Resident Connection Pooling (DRCP), который, по-видимому, является лучшим способом создания пула, поскольку он предоставляется самой Oracle (хотя у меня нет никакого опыта в этом вопросе).