关于arm平台druid与springboot的sql超时异常

本地开发与服务器连接同一数据库,Druid监控到的超时SQL用Navicat执行速度正常,排除索引问题。服务经Jenkins发布,使用`docker run -p 8080:8080`端口映射时出现异常,切换为`--network=host`主机模式后问题消失。进一步排查发现根因是宿主机物理网卡MTU为1450,而Docker默认bridge网络的veth MTU为1500,二者不一致导致较大TCP包在NAT或bridge转发时被分片或丢弃,表现为能ping通但curl卡死、HTTP请求无响应。Docker不会自动感知宿主机实际MTU,需手动指定或在host网络下运行。

关于arm平台druid与springboot的sql超时异常

druid 性能优化

数据库连接偶发超时,核心原因是MySQL wait_timeout与Druid连接池回收参数不匹配。如MySQL设为30分钟关闭空闲连接,而Druid最小回收空闲时间设为1小时,连接池中的连接已被数据库断开,业务请求时直接报错。解决方案:一是Druid适配数据库,调小空闲回收时间(如5分钟标记可回收、20分钟强制回收),或开启validationQuery预检测(select 'x'),但高并发时性能明显下降;二是数据库适配Druid,高并发时将wait_timeout调大(如8小时),Druid空闲回收调至4小时/6小时,避免预检测损耗。关键是平衡二者超时参数,并可借助Druid监控定位慢SQL。

druid 性能优化
弹