Допустим, вы определили свойство как
maxActive = 100
, что по существу означает
Size of the pool = maxActive = 100
Проблема с просто maxActive
Size of pool under heavy load = maxActive
Size of pool under no/low load = maxActive
Даже при отсутствии нагрузки (none of the connections are actually in use
) все 100 подключений потребляют ресурсы
Вы определенно можете уменьшить maxActive до 80. Но это также будет означать, что вы также снизите верхнюю границу доступных соединений во время большой нагрузки (when application is consuming all available connections
) до 80.
Таким образом, вы застряли с maxActive в качестве размера пула
Как maxIdle решает вышеуказанную проблему
Допустим, вы определили свойства как
maxActive = 100
maxIdle = 80
, что по существу означает
Size of pool under heavy load = maxActive = 100
Size of pool under low load = maxIdle = 80
maxIdle дает пулу подключений гибкость для адаптации к нагрузке.
Во время высокой нагрузки (number of connections-in use > maxIdle
) maxActive является единственным свойством, которое определяет размер пула соединений
Но при отсутствии нагрузки (number of connections in-use < than maxIdle
), maxIdle определяет размер пула соединений
Таким образом, правильное значение maxIdle гарантирует, что пул соединений не будет иметь ненужных последствий для производительности.