java – c3po帮助程序线程要死锁
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – c3po帮助程序线程要死锁,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1642字,纯文字阅读大概需要3分钟。
内容图文
![java – c3po帮助程序线程要死锁](/upload/InfoBanner/zyjiaocheng/769/3582169c8bb746ce9fbe4c69866c6462.jpg)
我用我的gui应用程序使用c3po池.我有以下配置
overrides.put("maxStatementsPerConnection", 30);
overrides.put("maxPoolSize",70);
overrides.put("checkoutTimeout", 50000);
偶尔我会遇到尝试连接超时的情况
java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:527)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at com.jthink.jaikoz.db.Db.createConnection(Db.java:402)
即使我确定我没有其他联系打开.事实上,我曾经尝试过启用一些额外的选项(debugUnreturnedConnectionStackTraces,unreturnedConnectionTimeout)来尝试识别未关闭连接的问题并发现没有问题.这个问题很少发生,只有在运行一段时间后才会发生.我正在使用嵌入式Derby数据库.
幸运的是,当它失败的时候,我正在运行它,启用了Youkit Profiler,我可以进行监控分析,发现我们有三个c3po线程都在互相等待,这就是为什么我认为实际上有一个僵局在这里
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread#0
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread#1
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread#2
这类似于numHelperThreads的设置吗?
我采取了一个这样的screendump
我发现c3po有问题,我可以编码从中恢复吗?
解决方法:
你看到的三个线程确实是帮助线程.这些会异步减慢JDBC操作,例如关闭未使用的连接.堆栈跟踪的最后一行
com.jthink.jaikoz.db.Db.createConnection(Db.java:402)
似乎表明C3P0正在尝试打开一个新连接,但数据库拒绝创建一个.我假设’Jaikoz’数据库拒绝连接,C3P0连接池不是问题.
西蒙
内容总结
以上是互联网集市为您收集整理的java – c3po帮助程序线程要死锁全部内容,希望文章能够帮你解决java – c3po帮助程序线程要死锁所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。