背景 症状 排查 修复 背景 最近在陆续做机房升级相关工作,配合DBA对产线数据库链接方式做个调整,将原来直接链接读库的地址切换到统一的读负载均衡的代理 haproxy 上,方便机柜和服务器的搬迁。 切换之后线上时不时的会发生 discard connection 错误,导致程序报 500 错误,但不是每次都必现的。 开发框架: spring boot+mybatis+druid+shardingJDBC 网络架构: appserver->mysql(master) 写 appserver->haproxy->mysql(slave)/n 读 第一反应肯定是因为这次的读库地址的变动引起的问题,觉得问题应该是 druid 链接池中的 connection 保活策略没起作用,只要做下配置修改应该就可以了。结果这个问题让我们排查了好几天,我们竟然踩到了千年难遇的深坑。 这个问题排查的很坎坷,一次次的吐血,最终我们定位到问题并且优雅的修复了,我们一起来体验下这个一次一次让你绝望一次一次打脸的过程。 症状 先说故障症状,经常出现如下错误: discard connect.... 诡异的druid链接池链接断开故障经验总结 druid
在 webflux + druid 中使用druid的监控页面 使用tomcat作为web容器(druid版本1.2.8) 1.1 添加依赖 1.2 将filter赋值到tomcat的context 中 使用netty作为web容器. //TODO 2.1 添加依赖 避免报错 2.2 添加路由 使用tomcat作为web容器(druid版本1.2.8) 如果能选择tomcat作为容器的话, 就非常好解决了. 只要配置一下filter就行 注意: druid版本必须 大于1.2.5 1.1 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> <exclusions> <!-- Exclude the reactor-netty dependency --> <exclusion> <groupId>or.... 在webflux+druid中 使用druid的监控页面 webflux
在使用springboot开发业务应用程序的过程中,使用多数据源的场景很常见。目前,业界常用的spring boot整合多数据源的方案主要有两个,一个是Mapper分包方式,另一个是AOP切片方式。针对这种多数据源使用场景的痛点,MyBatis-plus团队开源了一个更为方便的解决方案(https://mp.baomidou.com/guide/dynamic-datasource.html),但是对于整合druid数据库连接池,却没有给出具体的使用示例。本篇文章就是使用springboot整合mybatis-plus、druid连接池和多数据源配置,给出一个可用的示例。 一、在SpringBoot项目pom文件中引入依赖 在SpringBoot项目pom文件中,引入如下依赖: org.apache.commons commons-collections4 4.1 com.baomidou mybatis-plus-boot-starter 3.4.1 com.alibaba druid 1.2.4 com.baomidou dynamic-datas.... springboot整合mybatis-plus、druid连接池和多数据源配置 springboot