Jedis连接池满相关解决方案

本文主要探讨了在使用Jedis时遇到的连接池满的问题,通过详细分析原因,指出当并发请求过多导致Jedis连接池耗尽的情况。接着,提出了解决方案,包括调整连接池配置、优化请求处理逻辑以及采用连接复用等措施,旨在确保系统的稳定运行。
摘要由CSDN通过智能技术生成

问题:

我们线上有个服务叫做LightParser,做一些Query改写等工作。在线上跑了很久没有问题,突然收到一个报警,说超时,延迟200ms,它平常只要20ms左右,马上上机器去看问题。发现连接池满了,jedis不能从连接池获取连接。再netstat一下,发现连接redis的连接远远没有连接池里这么多。连接池设置了200个,实际连接只有5~6个。

分析:

一开始是怀疑连接没有归还,把以前使用的returnBroke什么的归还方式换成了连接close。但是没有效果。然后才认为是redis server关闭了连接,客户端没有感知到。

解决:

JedisPoolConfig config = new JedisPoolConfig();
config.setTestOnBorrow(true);

首先打开testOnBorrow选项,该选项开启,jedis会在从连接池拿连接的时候ping一下,验证该连接是否可用,可用就取出来,不可用就丢弃。

但是打开这个选项的时候报了一个异常:
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

看了源代码后原来是密码的问题,由于拿到连接的时候就要ping一下,而redis没有密码是不能ping的,所以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值