Hi, Recently we had a hardware issue due to which numActive use to drop drastically (in netstat I found that number of connections established to oracle db was keep on reducing). Enhancement/Suggession is to log a warning or recreate a new connection and put into pool when _numActive < _minIdle or _numActive < _maxIdle (please refer to the suggested code change) I am new to this community so, i might be wrong in the code which i am refering to. Please let me know if it make sence to submit the patch on this. thanks in advance, Bhaskar Suggested code change:
public class GenericObjectPool extends BaseObjectPool implements ObjectPool { ............. .............. public synchronized void evict() throws Exception { ......... ......... if(removeObject) { try { iter.remove(); int prevNumActive = _numActive; _factory.destroyObject(pair.value); //suggession start if( (prevNumActive < _maxIdle) || (_numActive < _numIdle) ) { //log a warning telling that too many connections are getting invalidated during eviction time. or //create a new connection and put it into pool back. } //suggession end } catch(Exception e) { // ignored } } PS: Enviornment: RHEL 4 with JDK 1.4 Configs: maxActive = 50 maxIdle = 30 factory=org.apache.commons.dbcp.BasicDataSourceFactory maxWait=10000 timeBetweenEvictionRunsMillis=900000 numTestsPerEvictionRun=50 minEvictableIdleTimeMillis=1800000 testWhileIdle=true I noticed that in netstat, number of connections with oracle db got reduced from 12 to 8 at some point of time.