AWS RDS对接Spring Boot JPA后连接数激增,如何优化及安全维护连接
降低数据库连接数的操作方案
- 优化Spring Boot JPA连接池配置(默认使用HikariCP)
- 调低
spring.datasource.hikari.maximum-pool-size参数,单实例低流量业务场景设置为2~4即可,无需维持过高的池内连接上限 - 调整
spring.datasource.hikari.minimum-idle与最大连接数保持一致,避免连接池长期持有闲置连接占用配额 - 新增
spring.datasource.hikari.idle-timeout = 300000配置,自动释放空闲超过5分钟的池内连接
- 调低
- 清理浏览器端的无效连接:浏览器默认无权限直接访问RDS,当前5个连接大概率是调试阶段多窗口直连、或是前端逻辑直接发起数据库请求导致的,强烈建议改为通过后端接口统一访问数据库,所有连接通过连接池复用,避免前端零散新建连接
- 释放手动工具连接:Workbench等客户端工具使用完后及时关闭会话,避免长期占用连接
- 定位未知来源连接:在RDS控制台执行
SHOW PROCESSLIST;命令,查看所有连接的来源IP、空闲时长、执行状态,确认闲置连接后手动终止即可
数据库连接稳定维护建议
- 统一使用连接池管理所有业务连接,禁止任何业务端、调试工具直连数据库创建连接,从根源避免连接泄露
- 配置RDS连接数告警:在AWS CloudWatch中配置连接数使用率超过70%的告警规则,提前感知连接数上涨风险
- 配置自动回收闲置连接规则:在RDS参数组中调整
wait_timeout、interactive_timeout参数为1800(30分钟),自动断开空闲超过30分钟的连接,注意参数值不要设置过短,避免打断正常执行的长事务 - 优化数据库访问逻辑:避免JPA N+1查询、长事务等场景,减少单请求对连接的持有时间,降低连接占用时长
- 上线前做连接压力测试:模拟业务峰值流量验证连接池配置合理性,确保峰值场景下连接数不会超过RDS配额
内容的提问来源于stack exchange,提问作者InCheol Kim
相关产品推荐
相关产品推荐

