开发者社区> 问答> 正文

通信链路故障

每天固定的时间就会在日志里面反馈出来,不知道是mysql的配置问题还是druid的配置问题,还是druid的版本问题 我用的是druid-starter 版本是 1.1.18 druid的版本号是 1.1.18(很奇怪,错误代码里面指明的是1.1.17) mysql的版本是5.7.20 mysql-connector-java的版本是5.1.40 1.日志报错截图:(我们用了mycat做数据库中间件)

T34.png

T35.png

2.druid的​配置: #datasource spring.datasource.driver-class-name = com.mysql.jdbc.Driver spring.datasource.druid.filter.stat.enabled = true spring.datasource.druid.filter.stat.log-slow-sql = true spring.datasource.druid.filter.stat.merge-sql = true spring.datasource.druid.filter.stat.slow-sql-millis = 1000 spring.datasource.druid.filters = stat,wall,log4j spring.datasource.druid.keep-alive = true spring.datasource.druid.remove-abandoned = true spring.datasource.druid.remove-abandoned-timeout = 1800 spring.datasource.druid.initialSize = 5 spring.datasource.druid.maxActive = 30 spring.datasource.druid.maxWait = 60000 spring.datasource.druid.minEvictableIdleTimeMillis = 300000 spring.datasource.druid.timeBetweenEvictionRunsMillis = 60001 spring.datasource.druid.minIdle = 5 spring.datasource.druid.stat-view-servlet.enabled = true spring.datasource.druid.stat-view-servlet.login-username = tezign spring.datasource.druid.stat-view-servlet.login-password = tezign0818 spring.datasource.druid.testOnBorrow = false spring.datasource.druid.testOnReturn = false spring.datasource.druid.testWhileIdle = true spring.datasource.druid.useGlobalDataSourceStat = true spring.datasource.druid.validationQuery = SELECT 1 FROM DUAL spring.datasource.druid.validationQueryTimeout = 10 spring.datasource.druid.web-stat-filter.enabled = true spring.datasource.type = com.alibaba.druid.pool.DruidDataSource

#mysql spring.datasource.druid.my-cat.url = jdbc:mysql://mycat:xxxx/xx?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true spring.datasource.druid.my-cat.username = xxxx spring.datasource.druid.my-cat.password = xxxx

3.mysql的关键配置

wait_timeout, 86400 connect_timeout, 10 interactive_timeout, 7200

原提问者GitHub用户Ahrievil

展开
收起
山海行 2023-07-05 19:31:14 57 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    根据你提供的信息,每天固定时间会有日志打印提示可能与以下原因相关:

    Druid版本问题
    早期版本的Druid数据源存在一些问题,可能会导致固定时间出现日志打印。

    建议升级到较新的Druid版本,如1.1.20及以上,以获得 bug fixes。

    Druid配置问题
    检查Druid数据源的各配置项,看是否有异常。尤其要注意:

    连接检查配置,如testWhileIdle、testOnBorrow 是否合理
    连接池监控配置 timeBetweenEvictionRunsMillis 是否太短
    连接超时 maxWait配置 是否过低
    不当配置有可能导致固定时间出现问题。

    MySQL配置问题
    也需要检查MySQL配置,看一下:

    并发连接数阈值是否足够
    MySQL中是否有固定的任务(如backup)固定时间执行
    MySQL慢日志中是否有长时间运行的查询
    MySQL端也有可能引起固定时间出现问题。

    Druid监控和日志扩展
    检查Druid是否开启了监控拓展和日志打印,这些也有可能是端倪。

    总的来说,固定时间出现日志打印提示的原因可能来自 Druid 端、 MySQL 端或者 两边都有。

    需要分别检查他们的配置和版本,并根据日志内容进一步定位原因。

    升级 Druid 版本、调整Druid和 MySQL配置、关闭不需要的监控等措施都有助于解决问题。

    2023-07-30 16:41:36
    赞同 展开评论 打赏
  • 问题出在我们用的是mycat来作为数据库分表的工具,mycat重启会导致链接丢失,经查证,每次重启和报错的时间完全吻合

    原回答者GitHub用户Ahrievil

    2023-07-06 11:00:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载