You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Web Service部署Spring Boot+JPA应用时MySQL连接自动关闭求助

解决Azure上Spring Boot应用MySQL闲置连接断开问题

针对你遇到的Azure部署后闲置5分钟MySQL连接断开、无法自动重连的问题,按以下方案处理:

  • 调整HikariCP连接池核心参数
    Spring Boot默认使用HikariCP连接池,驱动层面的autoReconnect=true在连接池场景下无效,需要通过连接池的连接有效性检查机制解决:
    在application.properties或application.yml中添加以下配置:

    # 设置连接最大存活时间(需小于MySQL的wait_timeout)
    spring.datasource.hikari.max-lifetime=120000
    # 连接超时时间
    spring.datasource.hikari.connection-timeout=30000
    # 连接有效性验证超时时间
    spring.datasource.hikari.validation-timeout=5000
    # 空闲时验证连接有效性
    spring.datasource.hikari.test-while-idle=true
    # 验证连接的SQL语句
    spring.datasource.hikari.validation-query=SELECT 1
    

    原理:test-while-idle会定期检查空闲连接的有效性,max-lifetime确保连接在被MySQL主动回收前就被连接池销毁重建。

  • 检查并调整MySQL服务器的超时参数
    登录你的MySQL服务器,执行以下SQL查看超时设置:

    SHOW VARIABLES LIKE 'wait_timeout';
    SHOW VARIABLES LIKE 'interactive_timeout';
    

    如果这两个参数的值小于你设置的max-lifetime,MySQL会提前断开闲置连接。建议将其设置为大于max-lifetime的值(比如1小时):

    SET GLOBAL wait_timeout=3600;
    SET GLOBAL interactive_timeout=3600;
    

    注意:临时设置会在MySQL重启后失效,需修改配置文件(如my.cnf)永久生效。

  • 移除连接字符串中的autoReconnect=true
    MySQL 8.0+驱动已废弃该参数,且在连接池管理连接的场景下,驱动层面的重连逻辑会与连接池的生命周期管理冲突,反而导致异常。

  • 辅助排查:Azure App Service闲置设置
    虽然这不是连接断开的直接原因,但如果App Service开启了闲置休眠,可能加剧问题。可在Azure门户的App Service配置中开启“始终开启”选项,避免应用实例休眠。

内容的提问来源于stack exchange,提问作者Choppa dude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:05:23