提问者:小点点

动态调整连接池大小c3p0


我正在系统中使用c3P0。我有一个与根据请求数量改变池大小有关的设计问题。

我们有基于多租户的应用程序,其中每个租户的数据库都是独立的。我们使用hibernate实现持久性,使用c3p0实现连接池。每个租户的连接池是不同的。

目前,每个租户的连接池大小是静态的,在配置中定义。但是,当1-2个租户的负载增加时,我们需要为这些租户提供更多的数据库连接,而不增加其他租户的池大小。

我们想要的是动态增加这些租户的连接池大小,并从负载较低的其他租户的连接池中关闭未使用的连接。

我在考虑用maxIdleTime来连接。但是,因为我对MySql的连接总数有限制,所以我需要一种更主动的方法,以便增加高负载连接池,减少低负载连接池,并关闭未使用的连接。


共1个答案

匿名用户

在您的c3p0配置中使用高maxPoolSize可以吗?c3p0会根据需求自动“调整”池大小。(如果您希望它们快速调整,请查看maxIdleTimeExcessConnections。如果您想避免超时,请设置maxIdleTime或maxConnectionage)

请参阅:c3p0的文档,尤其是配置属性。