jakarta-ee - Java EE : when Users exceed the number that defined in connection Pool

标签 jakarta-ee servlets connection-pooling

我正在开发一个基于 Java EE 的应用程序,使用 Tomcat 作为服务器,使用 MySQL 作为数据库。
我已经为 50 个用户配置了连接池。

现在我的问题是,如果在给定时间有 51 个用户(同时)访问该应用程序,那么第 51 个用户会发生什么情况? (因为该应用程序一次仅支持 50 个连接)

我的要求是,对于第 51 个用户,我需要显示类似“
请稍后再访问”。


这可能吗?

最佳答案

50 个连接池意味着从 WebApp 到数据库最多有 50 个连接,这并不意味着可以同时连接到您的应用程序的最大用户数。

即使有很多用户同时使用您的应用程序,也不意味着所有用户都将使用与数据库的连接(例如,空闲、查看静态页面、从缓存中获取数据等)。

您没有提到您使用的是什么连接池,但我假设您正在使用任何体面的库并适本地使用它,例如每次完成查询时调用 connection.close() 以将连接返回到池。

如果是这种情况,请不要担心,如果池已全部用完,则下一个用户将排队等待,直到一个连接返回到池中。

所以你可以添加一个超时来检测这个队列时间,例如如果在 5 到 10 秒内 DriverManager.getConnection() 没有返回,假设池已满并将用户重定向到带有该消息的静态页面。

请务必记录此事件,因此如果您知道大部分时间池何时已满,那么是时候增加最大连接数了。

关于jakarta-ee - Java EE : when Users exceed the number that defined in connection Pool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012055/

相关文章:

java - 如何发送创建 JSON 字符串并将其从服务器发送到 android?

java - JPA : Create multiple parent, GAE 上的独生子女关系

java - 无法从 servlet 读取 lucene 创建的索引目录

android - 数据库无法连接

java - Eclipse IDE 和导入问题

java - 有没有办法有选择地调试 JVM 中的单个应用程序(或几个应用程序)?

java - 管理多个数据源的 session 时出现问题

java - 用户三次错误尝试后显示验证码

sql - 当连接关闭时,未提交的事务会发生什么?

java - 当连接数超过池的 maxSize 时,我的 Web 应用程序挂起