3
问题:开启keepalive后 链接池不停的过一段时间关掉所有链接,然后重新创建链接,最终导致mysql 报 "too many connections"; 原因:DestroyTask#shrink(boolean checkTime, boolean keepAlive) 方法有bug, 链接空闲时间: long idleMillis = currentTimeMillis - connection.lastActiveTimeMillis; 但keepalive后并没有更新connection.lastActiveTimeMillis,导致 idleMillis 会超过 minEvictableIdleTimeMillis、maxEvictableIdleTimeMillis 从而将其加入清除数组evictConnections中 清除掉链接。 解决办法; keepalive 时 更新 connection.lastActiveTimeMillis