python redis连接数过大_[问题分析]redis客户端连接数过多,大量空闲连接和readonly连接...

博客分析了Redis客户端连接数过多的情况,发现存在大量空闲连接和只读连接。通过检查Jedis连接池配置和使用jmx远程调试,发现问题可能出在Redisson连接池上。Redisson的connectionWatcher记录了很多未使用的Redis连接,通过调整Redisson的SlaveConnectionMinimumIdleSize和MasterConnectionMinimumIdleSize为1,解决了连接数过大的问题。
摘要由CSDN通过智能技术生成

问题

运维反应redis客户端连接数太多,超过默认最大限制1W。

执行命令

./redis-cli –h host –p port info clients

查看redis客户端连接数,共6个节点每个节点都是2000+

分析

执行命令

./redis-cli –h host –p port client list

查看具体连接信息,有大量空闲连接,主节点大量cmd=null,从节点大量cmd=readonly,且idle时间和age时间差不多大的连接

说明大部分连接都是没有用到的。

发现Jedis连接池的minEvictableIdleTimeMillis和timeBetweenEvictionRunsMillis都配置成了-1,是不是Jedis连接池未及时回收连接的问题呢?但maxTotal配置的是20,一共30+个组件,不应该超过这个值啊!

写个脚本,先用jps查看组件pid,再

netstat –tanlp | grep pid | wc -l

统计每个组件的连接,发现每个组件都已经十倍超出这个值,平均200+。

打断点进入Jedis连接池中实现空闲连接检测的GenericObjectPool.evict()方法,发现IdleObjects一直是0,并没有需要丢弃的空闲连接。

基于对commons-pool2的信任,而且同个组件的druid连接池并没有出问题(

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值