【问题标题】:High Hibernate Connection Pool Size高休眠连接池大小
【发布时间】:2020-10-03 22:07:02
【问题描述】:

我目前正在运行一个使用 Hibernate 作为我的 ORM 的游戏。最近,我们有很多玩家同时登录游戏。这引发了休眠

Exception in thread "main" org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!

我将池属性设置为 10。我的直接想法是简单地将池大小增加到 100,甚至 1000,但我不确定这会产生什么影响。我的猜测是,当有 100 多个线程同时运行到数据库时,高池大小可能会使系统陷入困境。

性能会是受高池大小影响的主要方面吗?设置池大小时还有什么需要考虑的吗?

【问题讨论】:

  • 您的连接池库应该对新连接进行排队,而不是丢弃它们。您使用的是哪个连接池?有一个最佳数据库连接数的公式;过多的连接会使您的系统陷入瘫痪。

标签: java hibernate connection-pooling


【解决方案1】:

您可以使用的最大连接数等于您的应用用于处理请求的最大线程数。根据您的线程除了连接到数据库之外所做的工作类型,实际数字会更少。

您应该测试您的数据库是否可以处理该数量的连接。

连接会占用相当多的内存,因此您应该看看您的 Java 服务器也有足够的内存来处理它们。

在启动该异常之前,您的连接池还应该有某种可以设置的“等待超时”。所以一个线程可以等待一个连接被释放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多