Redis 集群hash槽分配不均问题(实战)

背景

公司redis集群采用3主3从分片集群,随着公司业务量增大,发现3个分片服务器占用内存相差很大,有2台服务器几乎把服务器内存占满了,另一个服务器基本上没有占用什么内存。

redis 使用6.0.x版本

原因

使用redis-client --cluster check命令发现3台服务器占用的槽相差很大,一台服务器只分配了184个槽,一台服务器占用7219个槽,一台服务器占用8981个槽。

正常情况下,集群有3台机器,16384个槽应该是正常平均分配的,与当时安装redis集群的人确认了下,说他的安装文件是从其他集群拷贝过来的,当时也没太注意槽分配不均。 

解决

问题既然已经发生了,就得想办法解决问题,查询相关资料,可以通过redis-client --cluster rebalance解决,在测试环境试过这个命令没问题后。在夜深人静的时候(主要是防止移动失败,减少对业务的影响),执行了命令。

整个过程大概持续了十来分钟,最终提示所有的都槽移动成功,使用check命令,所有槽都均摊到每个节点,每个节点的key的个数也比较接近。

 问题

hash槽虽然均摊到每个节点,但是另外两个服务的内存还没有降下来,这个主要是因为redis有内存碎片导致的,实际占用内存和物理占用内存是两个概念。

具体可以使用info memory命令查看内存碎片化率。使用MEMORY PURGE或者CONFIG SET activedefrag yes,也可以不用管这个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值