处理 wait millis 60009, active 50 ,maxactive 200 异常 过程

本文详细记录了解决wait millis 60009, active 50,maxactive 200异常的过程。问题出现在数据库连接用完且未释放,通过Druid的超时回收机制定位到代码中未关闭的数据库连接,修复代码并调整Druid配置以避免未来的问题。" 127081470,7490522, Cosmos 2.0白皮书解读:跨链经济与ATOM新角色,"['区块链', 'cosmos2.0', '跨链技术', '代币经济', '去中心化治理']
摘要由CSDN通过智能技术生成

处理 wait millis 60009, active 50 ,maxactive 200 异常 过程
2018年04月19日 16:48:46 守望dfdfdf 阅读数:1910 标签: druid 更多
个人分类: 工作 问题
编辑
版权声明:本文为博主原创文章,转载请注明文章链接。 https://blog.csdn.net/xiaoanzi123/article/details/80007378
先说明一下项目特点:业务需要,需要进行相当多的数据库查询和插入、更新操作。生产环境30万数据,本地为了开发方便,只准备了两万数据。
之前的开发过程中测试项目,启动项目后 执行sql操作正常,日志一直再打印hibernate的sql。过一段时间以后 ,就突然停止打印了,等待一段时间(就是wait millis 配置的大小)后,控制台日志打印这句话 。当时第一次遇到这个问题,检查发现在spring的application.xml中配置了数据源druid。里面的配置有这几个参数。当时maxactive 是 50。意思很明显,活动的连接数与最大连接数相同,连接用完了,在等待新的连接,却没有新连接可用,然后超时了。当时我没有意识到这点,只意识到数据库连接不够用,而且网上也有说连接不够用的,就把maxactive 调大,就没有出现这个问题了。
近日,在开发环境部署后,发现数据量太大,这个问题又出现了,maxactive 调的越大,这个问题出现的越晚,但是肯定会出现,说明问题没有根本解决。之后我就详细了解下druid的配置参数都是什么意思,又参考此文:https://www.cnblogs.com/netcorner/p/4380949.html 。

使用druid连接池的超时回收机制排查连接泄露问题  https://www.cnblogs.com/netcorner/p/4380949.html

在工程中使用了druid连接池,运行一段时间后系统出现异常:

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60009, active 50
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:280)
... 64 more
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 50
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1071)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:898)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)

mysql数据库最大连接数设置为500,使用客户端能正常连接。连接数被未被占满。

分析原因应该是程序中有地方连接未关闭造成的。那如何来定呢?使用druid连接池的超时回收机制,在配置中增加以下内容:

<!-- 超过时间限制是否回收 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值