2012-09-14 108 views
1

我在我的系统中使用c3P0。我有与更改池大小基于请求数相关的设计问题。动态调整连接池大小c3p0

我们有基于多租户的应用程序,其中每个租户的DB都是分开的。我们使用hibernate作为持久性,而c3p0使用连接池。每个租户的连接池是不同的。

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

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

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

回答

0

会在你的c3p0 configs工作中使用高maxPoolSize吗? c3p0会根据需求自动“调整”泳池大小。 (如果你想让他们迅速弯曲下来,看看maxIdleTimeExcessConnections如果你想避免设置maxIdleTime或maxConnectionAge超时。)

参见:C3P0的 docs,尤其是 configuration properties