`

C3P0参数的使用(1)

    博客分类:
  • Java
阅读更多
基础的连接池配置
initialPoolSize, minPoolSize, maxPoolSize定义了连接池中连接的数量。请确保minPoolSize<=maxPoolSize。不合理的initialPoolSize会被忽略,并且使用minPoolSize会取代它。在minPoolSize和maxPoolSize之间,根据使用模式的变化,连接池中连接的数量会有变化。无论何时,没有连接可用,并且连接池中的连接数量没有达到maxPoolSize,连接数量都会增加。因为获得连接是非常慢的,快速或者批量增加连接数几乎总是非常有用的;而不是负载增加时,强迫每个客户端等待新的连接。acquireIncrement定义了当耗尽连接之后,连接池将会尝试获得新连接的数量(不管acquireIncrement怎么设置,连接池都不会允许超出maxPoolSize)。
无论何时,连接池测试一个连接并且发现它是被破坏的,或者在设置空闲时间之后连接超时,或者连接太老,连接池中的连接都会减少。

管理连接池的大小和连接的年龄
不同的应用有不同的需要,需要在性能、规模和可靠性之间权衡。C3P0提供了广泛的选项来控制很大的连接数还原到minPoolSize,并且在连接池中“老”的连接被积极地替换来维护它们的可靠性。
默认情况下,连接池绝不会使连接过期。如果你为了维持连接的“新鲜”,你希望连接随着时间的推移而过期,那就设置maxIdleTime并且/或者maxConnectionAge。maxIdleTime定义了在从连接池中扑杀之前,一个连接可以有多少秒不被使用。maxConnectionAge强迫连接池扑杀任何的连接,这些连接来源于数据库并且超过了设置的秒数。
maxIdleTimeExcessConnections是关于当连接池在负载之下时,最小化被C3P0连接池拥有的连接数目。默认情况下,C3P0连接池在负载下增长,但只能收缩如果连接测试失败或者通过上面秒数的参数后超时。一些人想要在峰值之后,他们的连接池快速释放不必要的连接。你能通过设置maxIdleTimeExcessConnections为一个比maxIdleTime短的值,如果连接超过了特定的时间,强迫连接在你设置的最小值之后释放它。
关于这些超时参数,有一些通用的建议:慢下来。连接池经历了仅仅一次取得连接的花销,然后复用它们许多次。大多数数据库支持连接打开数小时。几秒钟或者几分钟不需要搅动连接。设置maxConnectionAge或者maxIdleTime为1800秒(30分钟)是非常有挑战性的。对于大多数数据库,几小时也许是正确的。通过测试它们,你能保证连接的可靠性,而不是摔开它们。maxIdleTimeExcessConnections应该被设置为几分钟或者更少。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics