我使用的是Spring2.5;一个使用apache-commons-dbcp连接池的SimpleJdbcTemplate。还有一个线程池,它在查询运行时派生一个线程(执行多个查询,一旦所有查询完成,就会处理它们的结果,因此会派生线程以并行运行查询)。
最后,所有线程都在TIMED_WAIT中等待getConnection()。似乎没有线程获得连接。我检查了数据库,发现所有的连接都是空闲的。
是什么导致了这种情况?我有10个连接作为最大池大小和50-100个线程。我应该如何配置它?DBA说这应该是足够的连接(我同意,因为它们都是空闲的)。
同样的事情也发生在作为SimpleJdbcTemplate数据源的BoneCP上。
发布于 2011-12-14 03:09:36
事实证明,这是因为在循环遍历ResultSet的过程中,启动了另一个查询,因此在第一个查询足够多的情况下,第二个查询无法获得连接,因此一切都会死锁。
https://stackoverflow.com/questions/8407425
复制相似问题