You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "jefferyyuan (JIRA)" <ji...@apache.org> on 2018/10/23 00:40:00 UTC

[jira] [Created] (POOL-353) Return false if current connection count is less then MinIdle in DefaultEvictionPolicy

jefferyyuan created POOL-353:
--------------------------------

             Summary: Return false if current connection count is less then MinIdle in DefaultEvictionPolicy
                 Key: POOL-353
                 URL: https://issues.apache.org/jira/browse/POOL-353
             Project: Commons Pool
          Issue Type: Improvement
    Affects Versions: 2.6.0
            Reporter: jefferyyuan
             Fix For: 3.0, 2.6.1


At [https://github.com/apache/commons-pool/blob/master/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java#L1140]

It first evicts idle connections, then re-creates idle instances to ensureMinIdle.

DefaultEvictionPolicy will close idle connection even when there is <= MinIdle connections.

https://github.com/apache/commons-pool/blob/master/src/main/java/org/apache/commons/pool2/impl/DefaultEvictionPolicy.java

 

In case minIdle is set to large, it would causes problems like frequent full GC.
 * the connection related objects are promoted and stored in old gen, then evict will close them and make it gc-able, and ensureMinIdle will create new connections which will be eventually promoted to old gen and gc-able again.
 * Old gen will grow quickly and need full gc.

We can solve the problem if we always keep minIdle connections in the DefaultEvictionPolicy.

Or at least add doc to DefaultEvictionPolicy and may provide another EvictionPolicy which returns false if current connection count is less then MinIdle and refer it in  DefaultEvictionPolicy.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)