gpt4 book ai didi

mysql - 使用 c3p0 连接池时 MySQL 的最佳最大连接数设置是多少

转载 作者:行者123 更新时间:2023-11-29 12:51:20 25 4
gpt4 key购买 nike

针对这个问题,我将描述一下我们当前的生产环境。

  • 每个客户端都会部署我们的 Spring/Hibernate 应用程序
  • 每个部署都有自己的数据库。
  • 我们的服务器上现在有超过 300 个客户端

我已将 c3p0 配置为最小连接池大小为 1、增量值为 3、最多 20 个连接。所以我的问题是,我与 MySQL 的最大连接数应该是多少?应该是最大池大小乘以客户端数量 (20 * 300 = 6000) 吗?还是应该少一点?如果 c3p0 已经有 3 个连接并尝试获取另一个连接并且 MySQL 处于最大连接,是否会发生错误?

我不认为所有客户端都同时需要最大数量,但我确实希望防止在发生边缘情况时发生任何错误。

最佳答案

理论上,正如你所说,你的 MySQL 最多可以看到 6000 个连接,所以为了安全起见,这就是答案。

但是您确实不希望它打开 6000 个连接。如果每个池的 minPoolSize 为 1,maxPoolSize 为 20,听起来好像您期望客户端经常处于静止状态,但偶尔会出现使用高峰。除非峰值可能在时间上高度相关,否则您通常的负载应该低得多。

默认情况下,c3p0 连接池会随着负载峰值而快速增长,但不会衰减。如果您设置了激进的 maxIdleTime ,或者更好 maxIdleTimeExcessConnections在您的 c3p0 池上,您可以确保静态池保留很少的连接,并降低接近理论最大值 6K 的可能性。

至于 MySQL 设置,为了安全起见,您可以将其设置为 6K,或者将其设置得更低,以便在 DBMS 负担过重时看到错误而不是缓慢。最好估计您期望的峰值使用情况,将 MySQL 最大值设置为两倍,然后查看是否严重违反了您的负载期望(即,是否由于 DBMS 拒绝连接而发生错误)。

对于 300 个不同的数据库,这意味着 300 个 c3p0 数据源,这可能会导致线程和线程管理的高开销。 c3p0 的 numHelperThreads 默认为 3,您不希望低于该值。所以,这是值得考虑的事情。

关于mysql - 使用 c3p0 连接池时 MySQL 的最佳最大连接数设置是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24681175/

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