连接池原理与指标
连接池 在应用进程内维护一组到数据库(或其它有连接开销的资源)的 可复用连接,避免每次请求都 TCP+认证+会话初始化,并在并发下 控制最大连接数,保护数据库。
基本生命周期
应用启动 → 创建 initial 条连接(可选)
请求到来 → borrow(若无空闲则新建到 max;若达上限则等待或失败)
使用完毕 → return 到池(连接保持打开、状态复位)
定时任务 → 剔除 idle 过久或校验失败的连接核心参数(各实现命名略不同)
| 概念 | 含义 |
|---|---|
| 最小空闲 | 池里常驻的最少空闲连接 |
| 最大活跃 | 可同时借出的连接上限 |
| 最大等待 | borrow 阻塞超时时间 |
| 校验存活 | validationQuery / isValid,防中间设备掐断 |
排队与耗尽
当 活跃连接 == max-active 且都在占用时,新请求 等待(直至超时)或 失败。排查优先:慢 SQL、长事务、泄漏(借了未还)。
与其它中间件
- Druid、HikariCP:JDBC 场景主力。
- 分库分表 下可能多数据源,每池独立配额;见笔记 ShardingSphere(若在库中有)。