我在我的系统中使用c3P0。我有与根据请求数量更改池大小相关的设计问题。
我们有基于多租户的应用程序,其中每个租户的DB是分开的。我们使用hibernate进行持久化,使用c3p0进行连接池。每个租户的连接池都不同。
现在,每个租户的连接池大小都是静态的,并在配置中定义。但是当1-2个租户的负载增加时,我们需要为这些租户提供更多的数据库连接,而不增加其他租户的池大小。
我们想要的是为这些租户动态增加连接池大小,并从负载较低的其他租户的连接池中关闭未使用的连接。
我在考虑使用maxIdleTime进行连接。但是因为我对MySql的连接总数有限制,所以我需要一种更主动的方法,以便增加高负载连接池,减少低负载池,关闭未使用的连接。
答案 0 :(得分:0)
在你的c3p0配置中使用高maxPoolSize工作吗? c3p0根据需求自动“扩展”池大小。 (如果你想让它们快速向下弯曲,请查看maxIdleTimeExcessConnections。如果你想避免超时设置maxIdleTime或maxConnectionAge)
参见:c3p0's docs,尤其如此 configuration properties