Redis连接数不释放问题

本文详述了SpringBoot项目中使用Redis作为网关参数存储时遇到的连接泄漏问题。作者通过排查发现大量未释放的连接,并调整Redis的超时时间参数,成功解决了这一难题,确保了连接池资源的有效管理和项目稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、发现问题

我用的是springboot构建的项目,网关中连接redis存放每次请求的参数,以此达到不能重复请求的目的。

发现经常控制台报远程主机关闭一个连接的错误,每次报这样的错误,我就必须重启项目才行。非常麻烦,之前没有时间深究,现在今天痛下决心向百度请教一下。

2、定位问题

查询redis相关命令

客户端远程连接redis  redis-cli.exe -h  IP  -p 6379 -a  密码

查看连接数  info clients   发现两千多连接,肯定不正常,因为是测试环境。

查看超时时间 config get timeout   为0 为0代表无限制 一直连接

设置超时时间 config set timeout 100    设置为100s

过几分钟后 再次查看 会发现变的很少了

3、问题本质

Redis的客户端超时机制

在业务场景中,一般会由Redis客户端进行连接资源管理,例如分配连接、监控连接状态、回收连接池资源等。默认设置下,Redis不会主动断开连接,即使这个客户端已经空闲了很长时间。但在业务核心应用中,建议配置timeout参数以使Redis具有主动回收资源的能力。否则,如果客户端出现异常,连接池资源得不到及时回收,可能因空闲连接占满连接池导致服务崩溃。核心应用出现这样的问题可能引发整个业务的混乱,后果严重。

timeout参数值的单位为秒(s),取值范围为0-100000。默认值为0,表示无限制。在实际运行中,为了提高性能,Redis不一定会精确地按照timeout的值规定的时间来断开符合条件的空闲连接,例如设置timeout为10s,但空闲连接可能在12s后,服务器中新增很多连接时才会被断开。如需降低这个延迟,可适当增大hz参数的值,提高负责断开超时连接的Redis定时任务的运行频率。

贴上阿里云地址 还是阿里爸爸说的很清楚

https://help.aliyun.com/document_detail/143105.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值