java - 数据库连接匮乏

标签 java spring connection-pooling apache-commons-dbcp bonecp

我使用的是Spring 2.5;使用 apache-commons-dbcp 连接池的 SimpleJdbcTemplate。还有一个线程池,它在运行查询时生成一个线程(执行多个查询,并在所有查询完成后处理它们的结果,因此生成线程以并行运行查询)。

最终,所有线程都在 TIMED_WAIT 中等待 getConnection()。似乎没有线程获得连接。我检查了数据库,连接全部空闲。

这是什么原因造成的?我有 10 个连接作为最大池大小和 50-100 个线程。我应该如何配置这个? DBA 说应该有足够的连接(我同意,因为它们都是空闲的)。

将 BoneCP 作为 SimpleJdbcTemplate 的数据源时也会发生同样的情况。

最佳答案

事实证明,这是因为在循环 ResultSet 的过程中,启动了另一个查询,因此,如果第一个查询足够多,第二个查询就无法获得连接,一切都陷入死锁。

关于java - 数据库连接匮乏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407425/

相关文章:

java - Postgres 与 Glassfish 连接池

java - 编写自定义 HtmlResponseWriter JSF

java - 单一注销不适用于 Shibboleth IdP

spring - 如果使用 Spring AMQP 的数据库事务成功,则仅将消息发布到 RabbitMQ

java - Elastic Search Transport Client 过时连接

asp.net - 如何处理连接到多个 SQL Server 数据库的 Web 应用程序?

java - 应用程序卡在 serverSocket.accept() 并提供已在第二次调用线程时使用的绑定(bind)异常地址

java - 哪种方法更好,为什么?

java - ClassCastException是Spring boot启动批处理作业时将JobRepositoryFactoryBean强制转换为JobRepository引起的

spring - Java - Spring security、Shibboleth (apache) 和 onelogin