在c3p0中,maxIdleTime表示:
maxIdleTime :(默认值:0)秒可以在丢弃之前保持池的连接但未使用。零意味着空闲连接永不过期。
我不明白。假设,如果连接池中有10个等待连接,并且在maxIdleTime通过后,仍然没有新的数据库请求,那么所有这些连接都应该被丢弃?那么池中有0个等待连接?
答案 0 :(得分:0)
如果池中有10个连接且没有活动,那么在maxIdleTime
过去之后,是的,它们都将过期。
但这并不意味着池中不会有任何连接。在池过期旧连接的同时,它将从DBMS获取开始新的连接,以便维护minPoolSize
配置参数。
答案 1 :(得分:0)
如果您保持较大的池大小(即大于您预期的第99个百分位负载),则这意味着您周围将有许多空闲连接,最好通过定期清理它们maxIdleTime 和 idleConnectionTestPeriod 参数
可能是的,您也需要添加 idleConnectionTestPeriod 和 preferredTestQuery ,以确保连接有效或无效