当前位置: 首页 > news >正文

Druid GetConnectionTimeoutException解决方案之一

> Druid版本:v1.2.18

最近项目中经常出现:com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 120000, active 0, maxActive 128, creating 0, createErrorCount 2,但是其他平台连接这个数据源正常的
于是做了一个实验复现了这个问题:
1. 先搞一个案例一直拿连接执行
2. 中途关闭数据库模拟网络问题或者数据库服务繁忙的情况 net stop mysql
3. 然后复现了GetConnectionTimeoutException的情况
4. 再开启数据库发现数据库连接没有恢复 net start mysql

解决办法:
 //开启这两个配置就能实现断开重连了,如果没生效尝试升级一下版本1.2.16+
  druidDataSource.setBreakAfterAcquireFailure(false);
  druidDataSource.setKeepAlive(true);

public static void main(String[] args) throws Exception {Properties pro = new Properties();pro.setProperty(DruidDataSourceFactory.PROP_DRIVERCLASSNAME, "com.mysql.cj.jdbc.Driver");pro.setProperty(DruidDataSourceFactory.PROP_URL, "jdbc:mysql://localhost:3306/xxx?useCursorFetch=true");pro.setProperty(DruidDataSourceFactory.PROP_USERNAME, "root");pro.setProperty(DruidDataSourceFactory.PROP_PASSWORD, "123456");pro.setProperty(DruidDataSourceFactory.PROP_MAXWAIT, "120000");pro.setProperty(DruidDataSourceFactory.PROP_MAXACTIVE, "16");pro.setProperty(DruidDataSourceFactory.PROP_VALIDATIONQUERY, "select 1");DruidDataSource druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(pro);druidDataSource.setConnectionErrorRetryAttempts(0);druidDataSource.setConnectTimeout(10*1000);druidDataSource.setSocketTimeout(90*1000);druidDataSource.setRemoveAbandoned(true);//开启这两个配置就能实现断开重连了,如果没生效尝试升级一下版本1.2.16+druidDataSource.setBreakAfterAcquireFailure(false);druidDataSource.setKeepAlive(true);druidDataSource.init();new Thread(() -> {for (int i = 0; i < 10000; i++) {try {DruidPooledConnection connection = druidDataSource.getConnection();Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery("select * from xxx");while (resultSet.next()) {System.out.println(resultSet.getString("id"));}resultSet.close();statement.close();connection.close();Thread.sleep(1000);}catch (Exception e){log.error("error", e);}}}).start();Thread.sleep(30000000);}

http://www.lryc.cn/news/536309.html

相关文章:

  • 【JavaScript爬虫记录】记录一下使用JavaScript爬取m4s流视频过程(内含ffmpeg合并)
  • CSDN2024年度总结|乾坤未定你我皆是黑马|2025一起为了梦想奋斗加油少年!!!
  • 【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用
  • 联想电脑如何进入BIOS?
  • 蓝桥杯单片机大模板(西风)
  • 20250213刷机飞凌的OK3588-C_Linux5.10.209+Qt5.15.10_用户资料_R1
  • 2.13学习记录
  • 【DeepSeek】Deepseek辅组编程-通过卫星轨道计算终端距离、相对速度和多普勒频移
  • JavaEE架构
  • Docker 网络的几种常见类型
  • C++ 常用的设计模式
  • 【设计模式】01- 一文理解常用设计模式-“创建型模式”篇
  • 在ArcGIS JS API中使用WebGL实现波纹扩散特效
  • 我用AI做数据分析之四种堆叠聚合模型的比较
  • 《LSTM与HMM:序列建模领域的双雄对决》
  • Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用
  • 只需三步!5分钟本地部署deep seek——MAC环境
  • 网络工程师 (31)VLAN
  • 浏览器网络请求全流程深度解析
  • React历代主要更新
  • 【数据结构】(8) 二叉树
  • navicat导出表结构到Excel 带字段备注
  • 使用pocketpal-ai在手机上搭建本地AI聊天环境
  • 程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>
  • FPGA简介|结构、组成和应用
  • [c语言日寄]在不完全递增序中查找特定要素
  • Golang的多团队协作编程模式与实践经验
  • cv2.Sobel
  • Windows软件自动化利器:pywinauto python
  • 关于 IoT DC3 中驱动(Driver)的理解