@红薯 你好,想跟你请教个问题:用jconsole查看到网站的线程情况,发现大量c3p0线程被阻塞,如下:
名称: com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1 状态: com.mchange.v2.async.ThreadPoolAsynchronousRunner@871664上的TIMED_WAITING 总阻止数: 31,330, 总等待数: 76,038 堆栈跟踪: java.lang.Object.wait(Native Method) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
其中c3p0的配置也是参考oschina的设置的,用的是c3p0-0.9.1.2.jar:
# DataSource jdbc.datasource=com.mchange.v2.c3p0.ComboPooledDataSource jdbc.show_sql=true # Database Configurations jdbc.driverClass=com.mysql.jdbc.Driver jdbc.jdbcUrl=jdbc:mysql://localhost:3306/sisdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 jdbc.user=root jdbc.password=****** jdbc.maxPoolSize=100 jdbc.minPoolSize=2 jdbc.initialPoolSize=2 jdbc.acquireIncrement=2 jdbc.maxStatements=0 jdbc.maxIdleTime=300 jdbc.checkoutTimeout=5000
目前网站访问运行也很正常,请问老大,这种被blocked的情况一般是什么导致的?如果继续下去,网站会挂吗?如何避免这种情况的出现?如何stop阻塞的线程?谢谢!
@tsl0922 请教,麻烦看一下,谢谢!######有关闭连接吗? 连接应该在 finally 块中被确保释放
######好的,谢谢老大,我再查查!######回复 @FoxHu : OSC 是有的,因为我们过滤器针对所有请求######网站有个手机客户端通过线程HTTP请求访问网站数据,如/action/api/medicineList,过滤器在这种情况下执行完请求会关闭数据库链接吗?######@FoxHu 最后还是自己程序的问题居多######老大,我看你曾经也遇到过该问题, http://www.oschina.net/question/12_54864######
如果你用 filter 关闭数据库连接,要注意一个问题:如果某个 action 处理请求耗时过长,这个 action 访问量大的话,就可能会导致大量数据库连接被占用,这种情况最好用完就关闭。
######检查代码时发现网站页面里有很多数据的展现读取都是通过velocity-toolbox.xml中定义的类读取数据的,而这些地方都没有关闭数据库连接,我在下面贴了示例代码######好的,我试试,多谢!###### @tsl0922 我在检测代码的时候发现,网站页面里有很多数据的展现读取都是通过velocity-toolbox.xml中定义的类读取数据的,而这些地方都没有关闭数据库连接,例如/** * 选取最近几条新闻 * @param count * @return */ public static List<New> topNews(int count){ String sql = "select * from cmsis_news where type=2 order by id limit ?"; List<New> news = QueryHelper.query(New.class, sql,count); return news; }
是不是这些地方导致的c3p0线程阻塞呢?对于这些tools类,每个方法我都要加上数据库连接关闭吗?
注:网站 其他的通过action请求的都在filter的finally里关闭了数据库连接
######回复 @tsl0922 : 好的,非常感谢!######回复 @FoxHu : 检查下有没有在 filter 管不到的地方用了连接没关闭的,比如自己开的线程里。还有就是你的 filter 里有没有用到数据库连接,看看需不需要关闭。######回复 @tsl0922 : 感谢!我再检查一下其他代码!######不需要吧,OSC 的也是这样,都没有关闭的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。