MySQL如何优雅处理数据库连接池耗尽_HikariCP与连接数调优

HikariCP报连接超时根本原因是活跃连接长期≥最大连接数且新请求排队超时,常见于慢查询、事务未提交、连接泄漏或maximumPoolSize过小;需结合监控、日志、SQL分析和合理参数配置综合排查。为什么 HikariCP 报 Connection is not available, request timed out after 30000ms这不是数据库挂了,而是连接池彻底没连接可用了。根本原因是:活跃连接数长期 ≥ 最大连接数(maximumPoolSize),且新请求排队超时。常见于慢查询堆积、事务未及时提交、连接泄漏,或 maximumPoolSize 设得太小。实操建议:先查当前活跃连接:SELECT * FROM information_schema.PROCESSLIST WHERE COMMAND != 'Sleep';,确认是否真有大量长事务或卡住的查询检查应用日志里是否有未关闭的 Connection、Statement 或 ResultSet ------ 尤其在异常分支里漏掉 close()HikariCP 默认不自动回收泄漏连接,需显式开启:leakDetectionThreshold=60000(单位毫秒),设太低会误报,太高起不到作用别盲目调大 maximumPoolSize:MySQL 默认 max_connections=151,超过会直接拒绝新连接;Java 端线程数也会上涨,可能触发 GC 压力maximumPoolSize 和 minimumIdle 怎么设才不翻车这两个值不是拍脑袋定的。设高了压垮 DB,设低了并发一上来就排队;设太低的 minimumIdle 会导致连接频繁创建销毁,增加握手开销。实操建议:先估算业务峰值 QPS 和平均响应时间(比如 200 QPS × 0.2s = 40 并发连接需求),再留 20%~30% 余量 → maximumPoolSize 初值可设为 50~60minimumIdle 建议设为 maximumPoolSize 的 70%~100%,避免流量突增时疯狂建连;但若 DB 实例资源紧张,可降到 50%,靠 connectionTimeout 控制等待注意 MySQL 的 wait_timeout(默认 28800 秒)和 HikariCP 的 idleTimeout(默认 600000ms)要错开,否则空闲连接可能被 DB 主动断开,而池子还傻等它"健康"启用 testOnBorrow=false(默认),改用 connectionTestQuery=SELECT 1 + validationTimeout=3000,更轻量Spring Boot 里怎么验证连接池真在按预期工作光看配置文件不等于生效。很多项目配了 maximumPoolSize,结果启动日志里显示的仍是默认值 10 ------ 因为属性名写错、配置没加 spring.datasource.hikari. 前缀,或者被其他 auto-configuration 覆盖了。 唱鸭 音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体

相关推荐
ClouGence4 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
zzzzzz3105 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐6 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
飞将7 小时前
从零实现数据库(2)——HashIndex + IndexManager
数据库
兵慌码乱17 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot19 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
Nturmoils1 天前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict