【问题标题】:how to choose maximum connection pool size?如何选择最大连接池大小?
【发布时间】:2016-03-24 22:44:30
【问题描述】:
<property name="hibernateProperties">
  <props>           
    <prop key="hibernate.c3p0.max_size">?</prop>
  </props>
</property>

这只是一个随机数猜测吗?或者是否有任何研究建议将特定范围用于特定用例?

【问题讨论】:

    标签: java hibernate connection-pooling c3p0


    【解决方案1】:

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

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

    • 预期用途。例如,如果您期望 10 个并发用户的典型使用模式,偶尔会出现 20 个用户,那么将数字 50 设置为最大大小没有什么意义,即使您认为您的机器可以处理它。虽然乍一看似乎无害,但您必须记住,数据库连接是一种昂贵的资源,有时您可能希望实际限制使用量以符合您的期望,如果只是为了测试您自己的假设并了解系统的真实、类似生产的使用模式,并防止您的应用程序占用资源,从而可能影响其他应用程序。

    • 可用资源。如果您知道(并且很容易验证)您的数据库一次只能接受 30 个连接,那么无论应用程序的使用模式如何,设置大于 30 的数字都是没有意义的。

    • 应用程序设计。您的应用程序将主要使用短期连接吗?长期连接?您是否为 JDBC 调用设置了超时,因此您的 JDBC 调用一开始是有时间限制的?例如,当您知道将每个操作的超时时间设置为 30 秒时,您将如何配置连接池与知道您设置了超时 2 分钟。

    • 具体产品注意事项。我不确定c3p0,但某些提供连接池机制的容器将它们自己的因素纳入等式。如果您正在使用容器提供的连接池功能,您应该阅读该容器的文档,以了解容器的供应商是否对配置他们提供的连接池机制有所了解。

    ...只是不要猜测一个数字。

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

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2012-04-30
      相关资源
      最近更新 更多