## 任务目标
请排查 Redis Jedis 连接池容量和资源泄漏问题。
以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。
## 输入信息(选填)
两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。
连接池问题:
工程与连接记录:
## 信息不完整时
先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。
### 优先确认
- 查找 getResource、close、try-with-resources、提前返回及跨线程持有 Jedis 的路径。
- 读取 maxTotal、等待和空闲检测等实际参数定义及版本默认值。
- 汇总应用实例、业务池和分片数量,关联服务端连接限制与已有活跃、空闲、等待指标。
- 区分借用等待、建立连接和命令执行超时,查看慢命令或长任务占用证据。
### 可采用的默认处理
- 默认只读检查资源生命周期,不扩大连接池、不重启应用或更换依赖。
- 缺 QPS 或耗时数据时先交付连接预算公式和需要观测的占用时间,容量值标待测。
- 按工程版本解读 API 与时间单位,不照搬 Jedis 2.9.0 示例参数或默认值。
### 必须有依据的事项
- 目标业务的请求完成期限或允许等待时间无法确定时,不擅自改变借用超时与失败行为。
只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。
### 资料仍不足时的交付
- 无工程时提供正常、异常、提前返回与批处理的资源生命周期审查样例及版本核对入口。
- 无池指标时交付连接总预算表和最小观测方案,区分泄漏、慢占用与容量不足的证据。
## 执行要求
适用范围:Jedis连接池及Commons Pool管理的客户端;官方页面示例基于Jedis2.9.0,必须核对实际版本API和默认值,不将该示例作为依赖升级建议。
结合应用规模、命令耗时和服务端限制评估池大小,核对借用资源是否归还;池耗尽不一定需要扩容。
检查步骤:
1. 准确区分连接建立失败、借用等待超时、连接已耗尽与命令执行超时,按首次出现时间关联应用发布、流量和数据库资源,避免把所有异常都解释为池太小。
2. 逐一核对正常、异常、提前返回和批处理路径中的资源归还,检查是否把Jedis实例跨线程共享或在长任务中持有;提出能定位泄漏的最小观测方式。
3. 统计每个应用实例、业务池与分片的连接总量,包含扩容、滚动发布时并存的实例,计算与服务端连接限制的关系,并保留必要余量。
4. 根据实际命令耗时与到达率估算所需并发连接,核对等待上限、空闲连接及检测配置;参数名称和时间单位必须匹配版本,不直接复制旧文档默认值。
5. 检查慢命令、网络、DNS和下游阻塞是否延长占用,分别说明调整池容量与消除根因的效果;需要预热时评估启动期间的集中建连压力。
6. 在代表性流量下验证借用等待、活跃连接、空闲连接、错误和服务端负载,覆盖突发、节点故障与恢复;记录每次配置变更和可撤回的旧值。
## 交付与验收
输出要求:输出异常分类、资源生命周期、连接预算、参数建议及验证结果。参数表使用“当前值|版本依据|建议值或区间|推导条件|验证指标”,不得只给一组所谓通用最优参数。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。
### 本条完成检查
- 每个疑似泄漏关联借用者、持有路径、归还位置和可复现条件。
- 容量建议包含实例与分片总量、服务端限制、当前值、推导条件和待测指标。
- 不把池耗尽直接判为池过小,实测与静态风险分开报告。
按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。
## 参考资料与适用边界
来源(核验日期:2026-09-08):
[阿里云《JedisPool资源池优化》](https://help.aliyun.com/zh/redis/use-cases/jedispool-optimization)
整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。