Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定连接池中所需的连接数?_Java_Database_Hibernate_Connection Pooling_C3p0 - Fatal编程技术网

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

Java 如何确定连接池中所需的连接数?,java,database,hibernate,connection-pooling,c3p0,Java,Database,Hibernate,Connection Pooling,C3p0,我正在应用程序中使用hibernate 3.2.2。对于连接池,我们使用C3P00.9.1。 我正在使用通用DAO模式和视图中的Open Session模式来执行数据库操作。 我们正在现有网站的新网站上工作。目前,现有应用程序的访问量为50万页。我对c3p0配置感到困惑。在什么基准上,我决定要打开的连接数。最大连接、最小连接、空闲时间、超时等…分析测试实例,进行小的配置更改,然后最终通过负载测试进行验证。您首先需要确定当请求传入且没有可用连接来服务时,池将执行什么操作。它会引发异常吗?返回空值?

我正在应用程序中使用hibernate 3.2.2。对于连接池,我们使用C3P00.9.1。 我正在使用通用DAO模式和视图中的Open Session模式来执行数据库操作。

我们正在现有网站的新网站上工作。目前,现有应用程序的访问量为50万页。我对c3p0配置感到困惑。在什么基准上,我决定要打开的连接数。最大连接、最小连接、空闲时间、超时等…

分析测试实例,进行小的配置更改,然后最终通过负载测试进行验证。

您首先需要确定当请求传入且没有可用连接来服务时,池将执行什么操作。它会引发异常吗?返回空值?阻止,直到另一个连接返回到池

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

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

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


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

是。非常感谢。我把它改成50万。嗨,沙石。你可能想看看。