易君召
发布于 2026-09-05 / 作者:易君召 / 8 阅读
0

数据库连接池状态监控完整讲解

主流:JDBC 连接池(HikariCP、Druid),核心监控目标:连接数、等待队列、活跃连接、空闲连接、泄漏、慢 SQL、使用率,用于发现连接耗尽、连接泄漏、池过小 / 过大等线上故障。

一、连接池核心指标(必须监控)

指标

含义

告警参考

最大连接数 maxPoolSize

池子允许总连接上限

配置基线

活跃连接 activeConnections

正在被业务使用的连接

接近 max,风险高

空闲连接 idleConnections

池中闲置可复用连接

长期 0 说明池打满

等待队列长度 pendingConnections

获取连接等待排队的请求数

>0 业务已经阻塞,重点告警

连接获取平均耗时 getConnectionAvgTime

拿连接耗时

突增说明池子紧张

连接泄漏数量 leakDetection

拿到连接未 close 归还

>0 代码泄漏 bug

连接池使用率

active / maxPoolSize

>80% 预警,>90% 严重

关闭连接数、创建连接数

频繁创建销毁连接

暴涨说明配置不合理

慢 SQL、执行耗时 (Druid)

SQL 执行性能

慢 SQL 拖慢连接释放

最危险信号:pendingConnections > 0,业务线程拿不到连接排队,接口超时雪崩。

二、HikariCP 监控方案(SpringBoot 默认)

HikariCP 通过 Micrometer Metrics 暴露指标,SpringBoot2 + 自动集成。

1. 依赖准备

<!-- micrometer 监控,输出prometheus指标 -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

application.yml

spring:
  datasource:
    hikari:
      maximum-pool-size: 10
      minimum-idle: 2
      leak-detection-threshold: 30000 # 30s未归还判定疑似泄漏,开发环境打开
management:
  endpoints:
    web:
      exposure:
        include: prometheus,metrics

2. HikariCP 关键 metrics 指标名

# 活跃连接
hikaricp_connections_active
# 空闲连接
hikaricp_connections_idle
# 等待队列(等待获取连接的线程数)
hikaricp_connections_pending
# 总连接数
hikaricp_connections_total
# 获取连接耗时 histogram
hikaricp_connection_acquired_nanos_seconds
# 连接创建耗时
hikaricp_connection_creation_nanos_seconds

3. Grafana Prometheus 查询示例

# 连接池使用率
hikaricp_connections_active / hikaricp_connections_max

# 等待队列大于0告警
hikaricp_connections_pending > 0

HikariCP没有内置页面,靠 metrics 输出,对接 Prometheus+Grafana 可视化。

4. 开发调试:编程获取 HikariPoolMXBean

可以代码 / JConsole JMX 查看

HikariDataSource ds = (HikariDataSource) dataSource;
HikariPoolMXBean poolBean = ds.getHikariPoolMXBean();
// 当前活跃
int active = poolBean.getActiveConnections();
// 空闲
int idle = poolBean.getIdleConnections();
// 等待队列
int pending = poolBean.getPendingConnections();
// 总连接
int total = poolBean.getTotalConnections();

三、Druid 连接池监控(阿里)

Druid 能力更强:内置监控页面、JMX、Metrics、慢 SQL、连接泄漏、防火墙。

1. SpringBoot 配置,开启监控面板

spring:
  datasource:
    druid:
      max-active: 10
      min-idle: 2
      # 开启监控统计
      filters: stat,wall,log4j2
      web-stat-filter:
        enabled: true
      stat-view-servlet:
        enabled: true
        login-username: admin
        login-password: admin123
        allow: 127.0.0.1

访问地址:http://ip:port/druid 页面直接查看:连接池、活跃连接、空闲、等待、SQL 执行统计、慢 SQL

2. Druid Metrics(对接 Prometheus)

使用 druid-spring-boot-starter + micrometer,指标前缀 druid_*

druid_pool_active_count     #活跃连接
druid_pool_idle_count       #空闲
druid_pool_wait_thread_count#等待线程数
druid_pool_max_active       #最大连接
druid_sql_query_duration_sum #SQL耗时

3. JMX 方式监控 DruidDataSourceMBean

JConsole 可以直接查看全部池状态。

四、监控体系完整落地方案

方案 A:生产标准方案(推荐)

SpringBoot 应用 + Micrometer + Prometheus + Grafana

  1. 开启连接池 metrics 埋点(Hikari/Druid)

  2. Prometheus 定时拉取 /actuator/prometheus

  3. Grafana 配置大盘展示:活跃、空闲、等待队列、使用率、获取连接 P95 耗时

  4. 配置告警规则

    • hikaricp_connections_pending > 0:P0 告警,连接池排队

    • 连接池使用率持续 > 85%:预警,评估调大 maxPoolSize

    • 获取连接 P95 耗时 > 500ms:池子压力大

    • 连接泄漏指标出现数值:代码未 close 连接

方案 B:简单调试(开发 / 小项目)

  1. Druid:直接访问内置 druid 监控页面

  2. Hikari:JConsole JMX 查看 HikariPoolMXBean,或者写接口把池状态输出

方案 C:日志监控

  • Hikari: leak-detection-threshold 泄漏检测,打印 warn 日志,发现连接泄漏

  • Druid stat filter 输出慢 SQL 日志

⚠️ leak 检测不要在生产开太小阈值,会误报,一般设置 20‑30 秒。

五、常见故障通过监控识别

  1. 连接耗尽,接口大量超时 监控现象:pendingConnections >0,active 接近 max,idle=0。 原因:max 太小 / SQL 慢导致连接迟迟不释放 / 连接泄漏。

  2. 连接泄漏 监控现象:active 持续上涨,idle 不断降到 0,重启恢复;泄漏检测日志打印栈。 根因:Connection/Statement/ResultSet没有关闭;try‑with‑resources 没写。

  3. 池子频繁创建销毁连接 监控:connection_creation 计数频繁上涨。 原因:min‑idle 设置过小,idle 超时回收频繁。

  4. 数据库侧视角辅助核对 在数据库执行 show processlist;(MySQL)查看真实客户端连接数,对比连接池指标,确认是否真实建立物理连接。

六、最佳实践建议

  1. 优先监控 pendingConnections,这是最优先告警指标,比单纯看活跃连接更关键。

  2. HikariCP 生产优先使用,Druid 适合需要 SQL 审计、内置监控页面场景。

  3. 不要盲目调大 maxPoolSize:数据库单实例能承载连接有限,过大反而压垮 DB。

  4. 开发环境打开泄漏检测,生产环境谨慎,阈值设置 20‑30s。

  5. 必须结合数据库侧连接数监控,两边对照排查。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/database-connection-pool-status-monitoring-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/