druid数据库连接异常:discard long time none received connection
现象使用数据库操作时出现出现错误,销毁长时间未使用的连接,并显示了无使用的时间ms数。ERROR 16858 --- [nio-8555-exec-1] c.a.druid.pool.DruidAbstractDataSource: discard long time none received connection. , jdbcUrl : jdbc:mysql://10.2.55.55:330
·
现象
使用数据库操作时出现出现错误,销毁长时间未使用的连接,并显示了无使用的时间ms数。
ERROR 16858 --- [nio-8555-exec-1] c.a.druid.pool.DruidAbstractDataSource : discard long time none received connection. , jdbcUrl : jdbc:mysql://10.2.55.55:3306/testdb, jdbcUrl : jdbc:mysql://10.2.55.55:3306/testdb, lastPacketReceivedIdleMillis : 99968
分析
当程序获取数据库连接,对已存在的数据库连接进行检查,检查到空闲时间过久的连接会进行注销,并报出错误提示。
相关源码
- com.alibaba.druid.pool.DruidAbstractDataSource
- com.alibaba.druid.pool.DruidDataSource
- com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker
参数
- testWhileIdle:是否开启获取连接是检查连接是否有效,默认true。
- timeBetweenEvictionRunsMillis:空闲时间大于检查时间,注销空闲连接超过timeBetweenEvictionRunsMillis的数据库连接,默认60s,设置未负数也会调整未默认值
- Ddruid.mysql.usePingMethod: 是否是用ping的方式检查数据库连接,超过1秒失败,mysql连接默认开启。设置方式:-Ddruid.mysql.usePingMethod=false,当usePingMethod为false时,会使用“select 1”使用连接进行查询检查连接是否有效,因此不会出现空闲时间。
扩展
- testOnBorrow:是否开启使用数据库连接时进行sql数据库检查,默认未false,开启对性能有影响,开启后不使用testWhileIdle方式检查。
更多推荐
已为社区贡献22条内容
所有评论(0)