gpt4 book ai didi

java - 如何确定连接池中所需的连接数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:32 25 4
gpt4 key购买 nike

我在我的应用程序中使用 hibernate 3.2.2。对于连接池,我们使用 c3p0 0.9.1。 我正在使用 Generic DAO 模式和 Open Session in View 模式来进行数据库操作。
我们正在开发现有网站的新网站。目前,现有应用程序的访问次数为 50 万页。我对 c3p0 配置感到困惑。在什么基准下,我决定不打开连接。最大连接数、最小连接数、空闲时间、超时等....

最佳答案

您首先需要确定如果有请求进入并且没有可用连接来为其提供服务时池将执行的操作。它会抛出异常吗?返回空值?阻塞直到另一个连接返回到池中?

一旦您知道超出容量时会发生什么,请考虑如何在调用代码中处理它,以及在什么情况下可以接受这种情况发生。在某些时候,随着连接数量的增加,您将不得不开始拒绝为某些请求提供服务,但只有您才能决定那个点是什么。实际点数取决于很多因素,包括诸如

  • 您当前的空闲和忙碌请求率
  • 这些利率的波动性(如果利率大幅波动,您需要更多“喘息空间”)
  • 与硬件改进和开发人员修改此代码的预算时间相比, future 容量增加的任何预测(如果您计划在几个月内升级它,则需要的开销比它打算继续运行一段时间要少几年)
  • 贵公司对处理能力做出的任何保证
  • 客户理解“稍后再试”请求的能力 - 例如如果你知道它是另一端的一个自动脚本,它在 503 上 hibernate 一分钟并再次尝试,那比人类收到“暂时超出容量”消息要好,而且两者都比批处理脚本好得多200 响应并因错误退出。
  • 请求的紧迫性 - 一些请​​求(查看小猫的照片)可以合理延迟,但其他请求(股票交易订单)可能对时间非常敏感。

等等等等。

希望从上面你能得出你需要能够并发处理的请求数量(如果有不同的类型请求,你可能需要考虑这个也引起关注)。然后只需查看传入请求如何获取和使用连接、推理和分析,直到您发现池中维持目标连接率所需的连接数。

不要忘记考虑诸如非请求线程(例如工作池)从同一个池(池需要更大)获取自己的连接,以及仅在执行的一部分中保持连接的请求(池可以更小)。

关于java - 如何确定连接池中所需的连接数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1426138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com