I find it hard to believe that a “business need” cares anything about the size of a connection pool. Connection pools are inherently a technical concern. The min pool size should be set to 0. Setting this to non-zero is typically more trouble than it is worth.
Can you share the rest of the connection pool settings? My suspicion is that the idle timeout is too low. It should be just shorter than the DB-side idle timeout setting, if one is set (check with your DBA). I see idle timeouts anywhere from about 5 minutes to a few hours. The key is having the adapter connection timeout before the DB kills the connection–that avoids stale connections.
If the idle time is short (say 10 seconds or less) and the min size is 1, you may be causing session thrashing on the DB. Connected, dropped, connected, dropped, etc.
Those are the default values used whenever a new JDBC connection is created. They are not good settings to use for typical needs.
I would recommend:
Minimum Pool Size = 0
Block Timeout (msec) = 30000 - 30 seconds for a thread to wait for a connection from the pool before giving up
Expire Timeout (msec) = 1800000 - 30 minutes for an idle connection to be closed by IS; based on your environment, this could be increased or may need to be decreased, depending upon the DB-side idle timeout value
Block and expire timeouts of 1 second are far too short for anything useful.