问题标签 [jdbc-pool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1073 浏览

java - 在 Tomcat 8 应用程序中使用多个连接池时出现命名错误

我有一个使用内置 Tomcat 连接池的应用程序,并且在大多数情况下它都可以工作。当我尝试使用另一个池从同一个数据库但来自不同的用户名/密码(它是一个使用 2 个用户名来访问表和函数的不同名称空间的 Oracle 数据库)获取不同的连接集时,就会出现问题。

第一个池被接受,但对于第二个池,我收到此错误

这是我的配置:

服务器.xml

上下文.xml

0 投票
1 回答
3509 浏览

tomcat - 如何跟踪/记录 tomcat dbcp 池中的连接并检测不返回连接池的代码

在大型应用程序的某个地方,有一些代码没有按应有的方式返回连接池的连接。结果是池迅速达到最大连接数。

这可以通过将其设置为删除放弃的连接来解决,但它会降低性能。

如何启用登录 tomcat dbcp 以显示何时借用和返回连接?

0 投票
1 回答
6587 浏览

java - 由以下代码创建的 DBCP 对象从未关闭

我们在应用程序中无法关闭与 DB 的连接。我正在尝试一切,所以我开始尝试使用 DBCP。

以下是重现问题的步骤:

1)我已经安装在 Windows 上:

  • 清理 apache-tomcat-7.0.59
  • Java 1.7.0_75

2) 我更改了 server.xml,我添加了一个指向我们数据库的资源

3) 我已将 ojdbc6_g.jar 添加到 tomcat/lib 目录

4)然后,我创建并部署了应用程序

并使用一对一测试 servlet

Servlet 类是

Tomcat 服务器上没有其他自定义。

在 20.iteration 之前,日志看起来非常好

在放弃超时后,tomcat 的控制台充满了 DBCP 未关闭的消息。

有人可以帮助解决这个问题吗?现在没有逻辑,我只是​​在与 DBCP 和通过 DataSource 的连接进行斗争。我很确定,我正在关闭连接。在Java代码中很清楚。

为什么连接没有关闭?请帮忙!

亲切的问候,感谢您的时间和帮助。

马丁·M。

0 投票
1 回答
1168 浏览

mysql - karaf + pax-jdbc 连接池已达上限

我在 karaf 中的 pax-jdbc 的池连接有问题,我正在尝试通过 blueprint.xml 将 Mysql 数据源(DS)注入到我的项目中,为了测试它,我构建了一个 karaf 命令,将 DS 注入karaf 命令类并使用该连接执行查询。没关系,但问题是当我多次执行命令时,每次执行都会创建一个新的 DS 实例,并且池连接无法打开与 MySQL 的新连接,因为池已达到限制。

我已在此链接中将我的代码上传到 github:https ://github.com/christmo/karaf-pax-jdbc ,如果您在此项目中发现错误,可以提出拉取请求。

为了测试这个项目,你可以这样做:

如果你执行这个命令“mysql-connection”9次,它会冻结karaf的提示,如果你中断执行,你会得到这个异常:

java.sql.SQLException:无法获得连接,在 org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:146) 在 com.twim.OrmCommand.execute(OrmCommand.java:53) 在 org. apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:83) 在 org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:67) 在org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:87) 在 org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:480) 在 org. apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:406) 在 org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108) 在 org.apache.felix.gogo.runtime。 org.apache.felix.gogo.runtime.Closure 的 Closure.execute(Closure.java:182)。在 org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run(ConsoleSessionImpl.java: 270) 在 java.lang.Thread.run(Thread.java:745) 引起:java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014) 在 java.util. .concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048) 在 org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583) 在 org.apache.commons.pool2.impl.GenericObjectPool .borrowObject(GenericObjectPool.java:442) 在 org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) 在 org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:134) ... 还有 12 个

0 投票
1 回答
1540 浏览

java - DBCP 池出现错误:“java.sql.SQLException:找不到配置文件”

我收到错误消息:

我检查了连接,没有任何问题。这只是一个池错误。如果我不使用池而是直接打开一个连接(使用connectionFactory下面的),我可以连接并执行一个语句并得到一个结果集。

创建和使用池的代码:

0 投票
0 回答
723 浏览

java - 使用 DBCP validationQuery="SELECT 1" 会影响整体性能并导致 BasicDataSource.getConnection() 超时

我一直在使用带有以下详细信息的 DBCP 连接池(https://stackoverflow.com/questions/37613362/slowest-component-org-apache-tomcat-dbcp-dbcp-basicdatasource-getconnection-du)但没有找到任何合适的解决方案然而。

无论如何,使用此配置,每次 Java 代码调用 Connection con = dataSource.getConnection(); 时都会执行查询 SELECT 1。

这保证了连接在交给应用程序之前已经过测试。但是,对于在短时间内非常频繁地使用连接的应用程序,这会对性能产生严重影响。

我很想知道它确实会影响或导致我遇到的缓慢,如果是这样,那么是否有替代方法(增加 maxActive 和 maxIdle 的数量)来解决这个问题?

0 投票
0 回答
230 浏览

java - DBCP 连接池问题

我有一个使用 DBCP 连接机制和 tomcat8 的应用程序。

它适用于任何getConnection请求,除了一种运行大约 7 到 9 次然后在返回连接时卡住的方法。

不知道如何调试,有人可以提供帮助。把方法放在下面

0 投票
1 回答
547 浏览

java - 为什么 DBCP getNumIdle 总是返回 0?活动连接何时变为空闲?

我正在使用 DBCP2 BasicDataSource 来管理数据库连接。当我测试时,我使用 getNumActive() 和 getNumIdle() 打印出池状态。我最终活动连接不断增加,而空闲连接始终为 0。

这是我的代码:

我的 BasicDataSource 配置是

并且输出是空闲连接数始终为0,无论我等待连接空闲多长时间,活动连接都会不断增加。

那么在什么情况下连接会变成“空闲”呢?我找不到任何超时设置来强制连接空闲。

任何见解将不胜感激!

0 投票
0 回答
1294 浏览

postgresql - 如何为负载平衡集群配置 Tomcat JDBC 池(如 PostgreSQL 主从复制)

假设有一个 PostgreSQL 集群,由一个主节点和两个通过流复制的只读副本组成。

如何配置 Tomcats DBCP 以了解数据库集群中有几个不同的节点,从而将变异语句分配给主节点的连接,并将无副作用的语句(负载平衡)分配给任何从节点的连接?

正如 PostgreSQL 的 JDBC 驱动程序文档所述,可以在 JDBC 连接 URL 中声明多个节点 jdbc:postgresql://host1:port1,host2:port2/database

于是萌生了在Tomcats server.xml中配置两个连接池的想法。一个用于读/写主数据源的 JNDI 资源和另一个用于只读副本的池:jdbc:postgresql://host1:port1/database?targetServerType=master和副本jdbc:postgresql://host1:port1,host2:port2/database?targetServerType=preferSlave&loadBalanceHosts=true

在这种情况下,运行在 Tomcat 上的应用程序需要知道存在两个语义不同的 DB 连接池,因此需要根据每个 SQL 语句来决定从哪个池请求连接。这似乎是一个糟糕的模式,因为应用程序依赖于特定的数据库基础设施,而 JDBC 池应该抽象底层数据库的实现。

在这种情况下,Tomcat DBCP 和 PostgreSQL 集群之间的额外抽象层(如pgpool-II )是否有帮助?(特别是当未来基础设施增长到多个 Tomcat 服务器实例或对 PostgreSQL 数据库的高可用性和故障转移的要求上升时)

0 投票
1 回答
553 浏览

multithreading - 圣杯。无法连接,池已耗尽

在修改了一种服务方法以使用多线程后,我发现如果多个用户尝试多次请求页面(并调用服务方法),服务器开始抛出“无法获得连接,池耗尽”异常。让我提供一个我的服务类的例子。

我已经为这个问题苦苦挣扎了一个多星期,但我找不到解决方案。我不太了解 Grails 如何处理会话、连接和事务。我的猜测如下。当调用 convertDocumentToJSON 时,它从池中获取连接(4 个用户,每个用户 25 个线程 = 100 个连接),但随后他们需要调用 evaluateStatus 方法,该方法也尝试从池中获取连接以满足自己的需要。但是pool已经用完了,没有一个线程可以释放连接,因为它们都在等待evaluateStatus。所以,有死锁。我试图为评估状态设置支持传播类型,但我得到“池连接已关闭”异常。然后我认为如果我从 convertDocumentToJSON 移动评估状态调用并编写这样的代码,它可能会起作用

但在这种情况下,我也遇到了同样的错误(池耗尽)。请给我建议我应该在我的代码中修复什么