机器配置

系统:CentOS6.7

配置:4C8G

应用:Redis Cluster,实例化

现象

1、无法启动redis,启动后系统OOM,直接杀死

2、Redis: OOM command not allowed when used memory > ‘maxmemory’

原因

内存已满,不允许数据在写入



注:

used_memory_human表示已用内存

used_memory_rss表示系统给redis分配的内存(即常驻内存)

mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情况下,used_memory_rss略高于used_memory,当内存碎片较多时,则mem_fragmentation_ratio会较大,可以反映内存碎片是否很多

解决过程

1、首先查看redis的内存使用,如上图。可以看到已用内存5G多,常驻内存3.8G多。而我们的机器内存只有8G可用。明显内存已经充爆。接下来想到的就应该是key的量太大了还是value的量太大了。

2、找出redis中的key。

  1. ###查看key的个数(最好是把key拿出来分析)
  2. keys *
  3. echo "keys *" |/usr/local/redis/bin/redis-cli -p 6381 > /tmp/6381.log

3、分析发现key中有650000的common:order:LogCacheKey这样的key,接下来我们需要确认下这些key的大小

  1. ###查看key大小的命令
  2. debug object
  3. echo 'debug object "common:order:LogCacheKey90bef863-dfc7-4739-8404-9b6624a70196"' |/usr/local/redis/bin/redis-cli -p 6381

4、分析发现common:order:LogCacheKey所占用的内存为3G左右。因此找到元凶为这个key所导致的。

5、清理key

  1. for i in `grep common:order:Log 6381.log`;do echo "del $i" |/usr/local/redis/bin/redis-cli -p 6381; done

6、key已经找到删除,现在要查找是哪个应用产生的。

因为开发人员没在,那从运维角度,我是从网络流量来分析的,使用iftop



根据流量大小,找到对应的主机,联系到开发人员确认。

小技巧

如果key少的话,可以直接取出每个key对应的value的大小,按照从大到小的顺序排序

  1. for i in `cat /tmp/6379.log`;do echo -n "$i "; echo "debug object $i"|/usr/local/redis/bin/redis-cli -p 6379|awk -F '[ |:]+' '{print $9}';done|sort -r -n -k2

总结

1、问题发生后,用最快最简单的方式先把问题解决。减少影响的时间。比如升级扩大内存。

2、此次遇到的问题是在测试环境,如果确认redis中数据可以清除,可以使用暴力的方式直接清空本地的实例化文件,将内存释放出来。但是生产环境切不可进行此操作。

Redis Cluster机器内存充爆处理的更多相关文章

  1. 合理利用配置不同的机器资源做redis cluster的server

    Redis cluster可以使用不同配置的机器学习因为我们可以手动调整不同的机器所承担的slot的个数,这样内存小CPU相对少的机器应该承担更少的slots

  2. 获取redis cluster中所有节点的内存使用情况

    需求:获取redis cluster集群中所有节点的内存使用情况. ip_port=`redis-cli -h $ -p $ -a abc123 -c cluster nodes | awk '{pr ...

  3. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...

  4. Redis中国用户组|唯品会Redis cluster大规模生产实践

    嘉宾:陈群 很高兴有机会在Redis中国用户组给大家分享redis cluster的生产实践.目前在唯品会主要负责redis/hbase的运维和开发支持工作,也参与工具开发工作 Outline 一.生 ...

  5. 全面剖析Redis Cluster原理和应用 (good)

    redis redis cluster注意的问题 : 1.‘cluster-require-full-coverage’参数的设置.该参数是redis配置文件中cluster模式的一个参数,从字面上基 ...

  6. Redis cluster学习 & Redis常识 & sort操作

    Redis中的5种数据类型String.Hash.List.Set.Sorted Set. Redis源码总代码一万多行. 这篇文章有一些Redis "常识" http://www ...

  7. Redis Cluster 实践

    一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/ ...

  8. Redis Cluster的搭建与部署,实现redis的分布式方案

    前言 上篇Redis Sentinel安装与部署,实现redis的高可用实现了redis的高可用,针对的主要是master宕机的情况,我们发现所有节点的数据都是一样的,那么一旦数据量过大,redi也会 ...

  9. Redis Cluster架构优化

    Redis Cluster架构优化 在<全面剖析Redis Cluster原理和应用>中,我们已经详细剖析了现阶段Redis Cluster的缺点: 无中心化架构 Gossip消息的开销 ...

随机推荐

  1. <Android 开源库> PhotoPicker 从头到脚

    1. 简介 PhotoPicker, 是一款开源的图片选择器.效果上和微信相似. 2. 使用方法 2.1 添加依赖 dependencies { compile 'me.iwf.photopicker ...

  2. pyspider爬取数据存入es--2.测试数据库连通性

    写一个简单案例测试能否将数据写入es #!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2017-10-27 08:35:57 ...

  3. loadrunner中pacing设置01

    之前一直也用pacing值来调节TPS,一直觉得它和think time没啥区别.这次项目中,和同事就此展开了讨论,细细一研究发现pacing值门道还是很多的. 如下面三个图: 上图是pacing的三 ...

  4. DAY65

    # 1.web应用# 2.CS和BS架构# 3.http协议# 特点: 1.接受请求正在处理# 2.请求处理完毕# 3.需要进行附加操作以完成请求# 4.服务器无法处理请求# 5.服务器处理请求出错# ...

  5. [Noi2017]整数 BZOJ4942

    分析: 30+暴力应该还是蛮水的,可以随便写写... 60+的就没那么容易了,但是应该挺裸的,往上架一颗线段树,查询连续1或0的长度,或者找到前缀中,第一个1或0,之后区间覆盖,单点查询,开bool, ...

  6. canvas绘画基础(一):认识canvas画布

    html5提供了一个<canvas>标签,结合javascript的canvas api接口可以用来绘制图形和动画.最近工作中涉及到画图的任务,下面来了解一下canvas的基础:canva ...

  7. FakeID签名漏洞分析及利用(一)

    作者:申迪   转载请注明出处: http://blogs.360.cn/360mobile BlueBox于7月30日宣布安卓从2010年以来一直存在一个apk签名问题[1],并且会在今年Black ...

  8. 20155318 《网络攻防》 Exp7 网络欺诈防范

    20155318 <网络攻防> Exp7 网络欺诈防范 基础问题 通常在什么场景下容易受到DNS spoof攻击 DNS spoof攻击即执行DNS欺骗攻击,通过使用Ettercap来进行 ...

  9. Spring集成Swagger,Java自动生成Api文档

    博主很懒... Swagger官网:http://swagger.io GitHub地址:https://github.com/swagger-api 官方注解文档:http://docs.swagg ...

  10. js中的数据类型及判断方法

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型. 基本类型 ● Boolean ● Null ● Undefined ● Number ● String ● Symbol (ECM ...