【发布时间】:2019-12-02 11:09:23
【问题描述】:
我们在我们的应用程序中使用 Apache DBCP 1.4 和 Java 后端进行数据库连接池。我们将 maxActive 的值设置为 20(默认情况下),存在请求需要超过 20 个连接才能执行的场景。那时应用程序挂起/无响应。
我已将值增加到 maxActive = 50。然后执行成功完成。在 Apache DBCP 的文档中,我看到我们可以将 maxActive = -1 的值设置为,这不会设置连接创建的上限。 我可以设置 maxActive = -1,如果不能,请帮助我理解为什么它是不可取的,以及我们可以为 maxActive 设置什么下降值,这样我的应用程序就不会挂起/无响应。
【问题讨论】:
-
应用程序挂起/无响应的情况是什么?这是一个错误吗?
-
不,这不是代码错误。假设 maxActive 连接限制 = 20,一个请求需要 2 个连接。然后我们并行处理 11 个请求(意味着需要的连接数 = 22),导致服务器无响应。
-
显示你的配置
-
final BasicDataSource basicDataSource = new BasicDataSource();basicDataSource.setUrl(url);basicDataSource.setUsername(user);basicDataSource.setPassword(password);basicDataSource.setDriverClassName(driver);if (driver.contains("oracle")) {basicDataSource.setValidationQuery("SELECT 1 FROM DUAL");basicDataSource.setValidationQuery("SELECT 1 FROM DUAL");}basicDataSource.setMaxTotal(20);@98765431@s>@98765431@span>
标签: java connection-pooling apache-commons-dbcp