Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10
druid
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
项目地址:https://gitcode.com/gh_mirrors/druid/druid

·
问题描述:
com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1124)
问题分析:
问题: 此为数据库连接池等待超时问题。服务端无法通过Druid连接池与数据库之间建立连接对象。
数据库连接池使用步骤:
- 声明静态数据源成员变量
- 创建连接池对象
- 定义公有的得到数据源的方法
- 定义得到连接对象的方法
- 定义关闭资源的方法
- 具体模板案例
本问题为数据库连接超时,缘由:在JavaWeb中接口实现层在使用完数据库连接池,未关闭数据库连接池。 超出数据库连接池的最大连接数目。
解决方式:
在相应的接口实现层,添加相应Druid连接池关闭代码即可。
DruidUtils.close(conn,ps);
具体案例代码:
public class LoginServiceImpl implements LoginService {
@Override
public String findPhone(String phone) {
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;
String sql = "select * from user where phone = " + phone;
try {
con = DruidUtils.getConnection();
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()){
String out_password = rs.getString("password");
return out_password;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
/**
* 问题却少代码处。
*/
DruidUtils.close(con,ps);
}
return null;
}
}
问题反思:
本人在学习数据库连接池时,存在概念理解不清晰之处。在后期实践过程中,未能正确关闭Druid数据库连接池导致问题产生。望再接下的开发道路中,应当更加脚踏实地,准确理解各类工具概念原理,并且遵循工具使用规范,不可想当然依照个人理解来操作。否则会造成不必要的工作负担。同时也应当保持理智的探索创新精神。




阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
最近提交(Master分支:6 个月前 )
b043fd17
2 小时前
c6a42512 - 3 天前
更多推荐
所有评论(0)