c3p0:`maxIdleTime`究竟是什么意思?

时间:2016-12-20 22:38:21

标签: database c3p0

在c3p0中,maxIdleTime表示:

maxIdleTime :(默认值:0)秒可以在丢弃之前保持池的连接但未使用。零意味着空闲连接永不过期。

我不明白。假设,如果连接池中有10个等待连接,并且在maxIdleTime通过后,仍然没有新的数据库请求,那么所有这些连接都应该被丢弃?那么池中有0个等待连接?

2 个答案:

答案 0 :(得分:0)

如果池中有10个连接且没有活动,那么在maxIdleTime过去之后,是的,它们都将过期。

但这并不意味着池中不会有任何连接。在池过期旧连接的同时,它将从DBMS获取开始新的连接,以便维护minPoolSize配置参数。

答案 1 :(得分:0)

如果您保持较大的池大小(即大于您预期的第99个百分位负载),则这意味着您周围将有许多空闲连接,最好通过定期清理它们maxIdleTime idleConnectionTestPeriod 参数

可能是的,您也需要添加 idleConnectionTestPeriod preferredTestQuery ,以确保连接有效或无效