Redis问题:主从maxmemory策略配置不当会致死循环
2012-07-21 15:13:50 来源:我爱运维网 评论:0 点击:
以前应用都没有Redis Slave之前,我们可以不关心这个bug。但有应用开始使用Redis Slave后,所有的redis需要设置maxmemory-policy为noevit...
以前应用都没有Redis Slave之前,我们可以不关心这个bug。但有应用开始使用Redis Slave后,所有的redis需要设置maxmemory-policy为noevition, 并且监控主库的内存使用率,不够的话需要增加内存:
noeviction -> don't expire at all, just return an error on write operations
这是Redis的一个Bug:即 maxmemory + evicting policy + slaves = death,详细可参考: https://github.com/antirez/redis/issues/327
这是Redis曝出了一个新bug,是指如果设定了Redis的maxmemory,并且这个Redis有Slave,那么当maxmemory限制达到后,就会出现死循环。具体原因和流程如下:
· Redis 达到了配置中设定的maxmemory限制,开始按LRU策略删除数据
· 被过期清除的数据会生成DEL 日志推送到Slave
· 但是如果Slave达到一定数量时,这条DEL日志使用的output buffer空间可能会超过刚刚清除数据空闲出来的空间,这时候会导致空间又超限了
· 于是整个清除过程就变成了死循环
而且这个问题不仅会出现在Slave的情况下,在写AOF buffer的时候也会发生同样的问题。
Redis作者随后发布了补丁(This fixes issue)对这个问题进行修复。目前此bug的修复已经合并到2.4的主干中,截止目前为止,Redis官方2.4.8稳定版本中已经包含对此问题的修复。
上一篇:Percona Playback 0.3 development release
下一篇:Mysql数据库复制延时分析
分享到:
收藏
评论排行
- ·Windows(Win7)下用Xming...(92)
- ·使用jmx client监控activemq(20)
- ·Hive查询OOM分析(14)
- ·复杂网络架构导致的诡异...(8)
- ·使用 OpenStack 实现云...(7)
- ·影响Java EE性能的十大问题(6)
- ·云计算平台管理的三大利...(6)
- ·Mysql数据库复制延时分析(5)
- ·OpenStack Nova开发与测...(4)
- ·LTPP一键安装包1.2 发布(4)
- ·Linux下系统或服务排障的...(4)
- ·PHP发布5.4.4 和 5.3.1...(4)
- ·RSYSLOG搭建集中日志管理服务(4)
- ·转换程序源码的编码格式[...(3)
- ·Linux 的木马程式 Wirenet 出现(3)
- ·Nginx 发布1.2.1稳定版...(3)
- ·zend framework文件读取漏洞分析(3)
- ·Percona Playback 0.3 development release(3)
- ·运维业务与CMDB集成关系一例(3)
- ·应该知道的Linux技巧(3)