- 如果开启了removeAbandoned,当getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发.
- 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超 过"removeAbandonedTimeout"时才被回收
- logAbandoned: 标记当连接被回收时是否打印程序的stack traces日志(默认为false,未调整)
一般会是几种情况出现需要removeAbandoned:
- 代码未在finally释放connection , 不过我们都用sqlmapClientTemplate,底层都有链接释放的过程
- 遇到数据库死锁。以前遇到过后端存储过程做了锁表操作,导致前台集群中连接池全都被block住,后续的业务处理因为拿不到链接所有都处理失败了。