Максимальный размер пула подключений - PullRequest
7 голосов
/ 26 апреля 2011

Я наткнулся на текст ниже, читая о свойствах пула соединений с базой данных:

Свойство maximum pool size указывает максимальное количество доступных и заимствованных (используемых) соединений, которые поддерживает пул.Если максимальное количество соединений заимствовано, никакие соединения не будут доступны, пока соединение не будет возвращено в пул.Это свойство позволяет увеличивать количество подключений в пуле по мере увеличения спроса.В то же время свойство гарантирует, что пул не увеличится до отметки exhausting a system's resources,, что в конечном итоге влияет на производительность и доступность приложения.

Мой вопрос: когда в тексте выше говорится о 'exhausting system resourcesозначает ли это снижение производительности базы данных?Если ответ «да», то почему у баз данных нет максимального предела соединения, который он может выдержать, не ставя под угрозу производительность, вместо того, чтобы полагаться на приложения для определения надлежащего максимального предела соединения?Есть ли в базе данных что-нибудь, что говорит, сколько одновременных соединений она поддерживает (скажем, для Oracle / SQL Server?)

1 Ответ

7 голосов
/ 26 апреля 2011

Как правило, проблема «исчерпания системных ресурсов» относится как к серверу приложений, так и к серверу базы данных. Чем больше соединений с базой данных вы разрешаете, тем больше параллельных сеансов выполняется на серверах приложений, тем больше оперативной памяти требуется виртуальной машине (серверам) приложений, тем больше нагрузка на процессоры на серверах приложений, серверах баз данных и т. Д. Если очередь работы с ошибками становится слишком большой, вы можете потратить больше времени на переключение процессов и выключение процессора и планирование задач, чем при выполнении полезной работы. Максимальный размер пула соединений позволяет вам обрабатывать лавину трафика или неожиданное узкое место производительности чуть более изящно, быстро выводя ошибки, вместо того, чтобы дать пользователям время ожидания ответов, которые никогда не придут.

Базы данных, как правило, имеют возможность ограничивать количество поддерживаемых соединений. Например, Oracle имеет параметры PROCESSES и SESSIONS и поддерживает несколько архитектур подключений (выделенный сервер и общий сервер), что позволяет вам сравнивать производительность с потреблением ресурсов и увеличивать число одновременных подключений, которые может поддерживать база данных.

...