多线程编程测试条件下:如果c3p0连接池设置过小。当连接池满时。由于没有对各个线程设置优先级。导致后面的线程一直等待连接。造成死锁。 jdbc.initialPoolSize=5 class T extends Thread { class H extends Thread { |
|
有些不明白lz的测试场景,难道所有的线程都是长时间占用连接的吗?如果是那就是应该调大连接数。如果不是,那关闭连接后就会有等待线程可以访问了。怎么还能出这个情况?
|
|
没有想明白。。。
|
|
40分 |
连接如果用完了是正常释放的,那连接池满就是你业务确实需要这么大的连接容量,如果是你无论加多大的池容量,都还是会连接池满,那很有可能是连接池泄漏
成熟的商业J2EE应用服务器比如Weblogic是有检测连接泄漏的机制的,开启后可以看到是否有数据库连接没有关闭,在哪个类哪个方法创建的连接等 |
搞定了。
qingyuan18 说的很对。 这两个问题都存在:一个是这些线程中的业务处理时间过长。另外检测后发现确实有一个线程在错误情况下出现了连接泄露。 谢谢啊 |