高 Hibernate 连接池大小

High Hibernate Connection Pool Size

我目前 运行 一个游戏,我在其中使用 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 服务器是否也有足够的内存来处理它们。

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