Jay's Blog

O ever youthful, O ever weeping.

0%

阅读本文前建议先阅读此篇博客: Redis源码从哪里读起

Redis 4.0 版本增加了许多不错的新功能,其中自动内存碎片整理功能 activedefrag 肯定是非常诱人的一个,这让 Redis 集群回收内存碎片相比 Redis 3.0 更加优雅,便利。我们升级 Redis 4.0 后直接开启了activedefrag,经过删除部分 key 测试,发现它确实能有效的释放内存碎片,但是并没有测试它其他相关参数。

一、问题现象

由于业务需要,我们删除了集群中占内存 2/3 的 Key,删除后集群平均碎片率在 1.3 ~ 1.4,内存明显下降,但是此时服务的响应猛然增高,我们通过 redis-cli -c -h 127.0.0.1 -p 5020 --latency 在服务端测试集群性能,发现响应(网络+排队)达到了 2-3ms,这对于 redis 来说已经非常高了,我们其他集群响应一般都在 0.2ms 左右。经过排查后,我们尝试将 activedefrag 功能关闭,并测试,发现 redis 服务端响应马上恢复正常,线上服务响应也降了下来,打开 activedefrag 响应马上飙高。

Read more »