Я бы предположил, что практически при любой настройке клиент / сервер не рекомендуется оставлять соединения открытыми, когда они не нужны.
Я специально думаю о соединениях DB2 / z, но это в равной степени относится ко всем серверам (базе данных и т. Д.). Эти соединения потребляют ресурсы на сервере, которые лучше всего использовать в других местах.
Если бы вы держали соединения открытыми в корпоративной среде, где десятки тысяч клиентов подключаются к базе данных, вы, вероятно, даже поставили бы мэйнфрейм на колени.
Я за идею объединения пулов, но не за идею пытаться держать отдельные сессии открытыми навсегда.
Мой совет будет следующим:
1 / В вашем пуле соединений есть три вида соединений:
- закрыто (поэтому на самом деле не в вашем пуле).
- готово, то есть открыто, но не используется клиентом.
- активно, то есть используется клиентом.
2 / Пул соединений должен поддерживать небольшое количество готовых соединений, минимум N и максимум M. N можно настроить в зависимости от пиковой скорости, с которой ваши клиенты запрашивают соединения. Если количество готовых соединений когда-либо падает до нуля, вам нужно больше N.
3 / Когда клиент хочет установить соединение, дайте ему один из готовых (делает его активным), а затем сразу же откройте новый, если теперь готово меньше, чем N (но не заставляйте клиента ждать этого, чтобы завершить, или вы потеряете преимущество объединения). Это гарантирует, что всегда будет хотя бы N готовых соединений. Если никто не будет готов, когда клиент захочет, ему придется подождать, пока вы создадите новый.
4 / Когда клиент завершает работу с активным соединением, верните его в состояние готовности, если число подключений меньше M готово. В противном случае закройте его. Это предотвращает наличие более чем M подключений.
5 / Периодически перерабатывать готовые соединения для предотвращения устаревших соединений. Если подключений больше N, просто закройте самое старое соединение. В противном случае закройте его и снова откройте другой.
Преимущество этого состоит в том, что в вашем пуле соединений достаточно готовых И юношеских соединений без перегрузки сервера.