Java 如何确定连接池中所需的连接数?
我正在应用程序中使用hibernate 3.2.2。对于连接池,我们使用C3P00.9.1。 我正在使用通用DAO模式和视图中的Open Session模式来执行数据库操作。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配置感到困惑。在什么基准上,我决定要打开的连接数。最大连接、最小连接、空闲时间、超时等…分析测试实例,进行小的配置更改,然后最终通过负载测试进行验证。您首先需要确定当请求传入且没有可用连接来服务时,池将执行什么操作。它会引发异常吗?返回空值?
我们正在现有网站的新网站上工作。目前,现有应用程序的访问量为50万页。我对c3p0配置感到困惑。在什么基准上,我决定要打开的连接数。最大连接、最小连接、空闲时间、超时等…分析测试实例,进行小的配置更改,然后最终通过负载测试进行验证。您首先需要确定当请求传入且没有可用连接来服务时,池将执行什么操作。它会引发异常吗?返回空值?阻止,直到另一个连接返回到池 一旦知道超出容量时会发生什么,请考虑如何在调用代码中处理此问题,以及在什么情况下可以接受这种情况。在某个时刻,随着连接数量的增加,您将不得不开始拒绝服务某些请求,但只有您可以决定这一点是什么。实际情况取决于很多因素,包括
- 您当前的空闲和忙请求速率
- 这些利率的波动性(如果利率大幅波动,你需要更多的“喘息空间”)
- 与硬件改进和修改此代码预算的开发人员时间相比,任何未来容量增长的预测(如果您计划在几个月内升级此代码,则所需的开销比它将持续运行几年所需的开销要少)
- 贵公司对加工能力有何保证
- 客户端理解“稍后重试”请求的能力—例如,如果您知道另一端是一个自动脚本,在503上休眠一分钟并重试,这比一个人获得“暂时超出容量”要好消息和两者都比获得非200响应并因错误退出的批处理脚本要好得多
- 请求的紧迫性-一些请求(查看小猫的照片)可以合理地延迟,但其他请求(股票交易订单)可能对时间非常敏感
不要忘记考虑非请求线程(例如工作线程池)从同一个池中获得自己的连接(池需要更大),以及请求仅在部分执行中保持连接(池可以更小)。是。非常感谢。我把它改成50万。嗨,沙石。你可能想看看。