数据库-Druid:discard long time none received connection.
观察项目运行日志,发现
tail -400f phoenix-mall.out | grep discard
[2021-04-22 11:33:10,010][ERROR][http-nio-9004-exec-1][com.alibaba.druid.pool.DruidAbstractDataSource]: discard long time none received connection. , jdbcUrl : jdbc:mysql://192.168.0.173:3306/fenghuang?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC, jdbcUrl : jdbc:mysql://192.168.0.173:3306/fenghuang?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC, lastPacketReceivedIdleMillis : 105605
https://blog.51cto.com/u_15101595/2625323
https://gitee.com/y_project/RuoYi-Vue/issues/I1XWZE?_from=gitee_search
上文的修改方式:
一、
经过我Google查询一通,有个人给出了一个方法,可以配置「druid.mysql.usePingMethod=false」原理是让验证空闲连接使用 select 1,而不是使用MySQL的Ping,这样就刷新了上次使用时间,不会出现空闲 60秒以上的连接,在运行参数中增加:-Ddruid.mysql.usePingMethod=false
查看valid变量赋值的地方,跟踪源码在MySqlValidConnectionChecker类的configFromProperties的方法中可以看到可以配置变量druid.mysql.usePingMethod=false,这样就不会通过ping的方式去检查链接的有效性,从而不会打印该error log。durid版本1.2.1
public void configFromProperties(Properties properties) {
String property = properties.getProperty("druid.mysql.usePingMethod");
if ("true".equals(property)) {
setUsePingMethod(true);
} else if ("false".equals(property)) {
setUsePingMethod(false);
}
}
二、
@Configuration
public class DruidConfig {
@PostConstruct
public void setProperties(){
System.setProperty("druid.mysql.usePingMethod","false");
}
}
正文到此结束