编程语言
首页 > 编程语言> > java-如何选择最大连接池大小?

java-如何选择最大连接池大小?

作者:互联网

<property name="hibernateProperties">
  <props>           
    <prop key="hibernate.c3p0.max_size">?</prop>
  </props>
</property>

这只是一个随机数猜测吗?还是有研究建议针对特定用例使用特定范围?

解决方法:

好吧,假设您正在谈论生产系统,那么“随机数猜测”绝对不是答案.实际上,“随机数猜测”绝不是生产环境中任何类型的配置的答案. “仅接受产品的默认设置”也是如此.

连接池属性(例如max_size)取决于以下因素:

>预期用途.例如,如果您期望一个典型的使用模式是10个并发用户,偶尔会有20个用户突发,那么即使您认为您的机器可以处理,将数字50设置为最大大小也毫无意义.乍一看似乎无害,但您必须记住,数据库连接是一种昂贵的资源,有时,您可能想要限制使用量以符合您的期望,即使只是将自己的假设进行测试并了解真实的,类似于生产的系统使用模式,并防止您的应用程序成为资源消耗者,从而可能影响其他应用程序.
>可用资源.如果您知道(并且易于验证)您的数据库一次只能接受30个连接,那么无论应用程序的使用方式如何,将数字设置为大于30都是毫无意义的.
>应用程序设计.您的应用程序将主要使用短期连接吗?长期存在的联系?您是否正在为JDBC调用设置超时,因此您的JDBC调用从开始就受到时间限制?例如,当您知道要为每个操作设置30秒的超时时间时,配置连接池的方式与在知道将超时时间设置为2分钟的情况下定义该池的方式有所不同.
>具体产品注意事项.我不确定c3p0,但是某些提供连接池机制的容器在公式中带有自己的因素.如果您使用的是容器提供的连接池功能,则应阅读该容器的文档,以了解容器的供应商是否对配置容器提供的连接池机制有一定了解.

…只是不要估计一个数字.

…而且不要只是假设产品的默认值.

标签:c3p0,hibernate,connection-pooling,java
来源: https://codeday.me/bug/20191031/1977668.html