Redis:userd_memory使用超出maxmemory

一、问题现象

2018.12.30 19:26分,收到Redis实例内存使用告警“内存使用率299%>=80%”,检查实例info memory信息, 发现:userd memory=29.84G 而实例maxmemory=10G,集群中其它实例userd_memory均匀且保持在500M左右;

二、问题分析

1、检查此实例中的key数量和大小,排查是否存在大key,执行dbsize,显示当前实例有68个key,执行--bigkeys命令,显示最大key是个hash类型的,size为500M;

2、持久化当前实例的数据,一般情况下,实例usermemory大小会介于rdb-aof文件大小之间,实际的userdmemory不超过850M,很显然实例中没有大key写入,

实例默认开启aof,我们需要手动执行bgsave,生成dump文件;

3、集群中其它实例userd_memory均在500M左右,包括这个主实例对应的从实例;

4、上谷歌搜索后,改变分析思路,检查实例输入输出缓冲区,执行client info 找出缓冲区最大的量,再执行client list 查看客户端连接信息,发现输出缓冲区有占用未释放,

id=140220 addr=10.xx.xx.xx fd=100 name= age=1118 idle=197 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=206443 omem=4850384840 events=rw cmd=setex

其中qbuf表示输入缓冲区的量,obl、oll、omem表示输出缓冲区的量,obl表示固定缓冲区的量,oll表示动态缓冲区的量,omem表示输出缓冲区共使用的字节数,换算后是4.6G

有多个客户端连接输出缓冲区很大。

三、问题处理

1、在当前实例对应的从实例上执行failover,倒换主从关系;

2、观察之前的主实例(现在的从实例),发现userd_memory没有下降,再执行重启操作,让主从之间进行一次全量同步;

四、总结

1、在问题处理操作阶段,可以通过重启主实例,Rediscluster会自动进行主从切换,省掉一步,但为了观察过程,我选择了先切换再重启;

2、问题处理阶段,实例的dump文件大小只有100多M,和其它实例的dump文件基本一致,所以当时已不用在实例中存在的key上继续分析了,要转换思路。

Redis: userd_memory使用超出maxmemory的更多相关文章

  1. Redis 缓存过期(maxmemory) 配置/算法 详解

    LRU(Least Recently Used) 最近最少使用算法是众多置换算法中的一种. Redis中有一个 maxmemory 概念,主要是为了将使用的内存限定在一个固定的大小.Redis 用到的 ...

  2. redis 使用内存超过maxmemory

    redis使用量超过了maxmemory,这时无法增加最大内存,redis 实例没有可用内存,导致命令都会执行失败 (error) OOM command not allowed when used ...

  3. Redis内存使用达到maxmemory设定值后玩家数据无法写入解决 Redis数据“丢失”问题

    Redis数据“丢失”问题 - CSDN博客 https://blog.csdn.net/real_myth/article/details/52582739 Redis内存使用达到maxmemory ...

  4. REdis之maxmemory解读

    redis.conf中的maxmemory定义REdis可用最大物理内存,有多种书写方式,以下均为合法: maxmemory 1048576 maxmemory 1048576B maxmemory  ...

  5. redis的maxmemory与maxmemory-policy关系

    如果redis配置了maxmemory和maxmemory-policy策略,则当redis内存数据达到maxmemory时,会根据maxmemory-policy配置来淘汰内存数据,以避免OOM.r ...

  6. Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?

    一.Redis 的默认配置 了解 Redis 的都知道,Redis 服务器状态有很多可配置的默认值. 例如:数据库数量,最大可用内存,AOF 持久化相关配置和 RDB 持久化相关配置等等.我相信,关于 ...

  7. Redis性能问题排查解决手册(七)

     阅读目录: 性能相关的数据指标 内存使用率used_memory 命令处理总数total_commands_processed 延迟时间 内存碎片率 回收key 总结 性能相关的数据指标 通过Red ...

  8. Redis内存使用优化与存储

    抄自http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage 本文将对Redis的常见数据类型的使用场景以 ...

  9. Redis缓存数据库详解

    Redis最为常用的数据类型主要有以下五种: 1)String 2)Hash 3)List 4)Set 5)Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存 ...

随机推荐

  1. nodejs服务后台持续运行三种方法

    一.利用 forever forever是一个nodejs守护进程,完全由命令行操控.forever会监控nodejs服务,并在服务挂掉后进行重启. 1.安装 forever npm install ...

  2. 工作小结:Base64注意事项、标签for属性

    Base64 场景1:后台保存的客户填写备注信息,前台无法正常展示 原因:无法正常展示的备注信息为客户直接从黑屏复制过来的信息,信息中包含有不可见的控制字符,回传至前台的json数据,浏览器无法正常解 ...

  3. ! [remote rejected] master -> master (pre-receive hook declined)

    前天准备上传一个project到GitLab上,但是试了很多次都上传不上去,报错如下: ! [remote rejected] master -> master (pre-receive hoo ...

  4. cookbook of python for data analysis

    打算写讲义,目录已经想好. Content basic of python jupyter 开发环境 python 基本语法 利用python脚本完成工作 numpy for matrix compu ...

  5. dbgview 在windows 10 中关闭后再次打开时无法“capture kernel”

    DbgView 是一个免费的用于抓取log 的工具,可以捕获并输出OutputDebugString()函数的输出,以及输出windows driver 中dbgprint 的log,对于window ...

  6. Django框架的前奏(安装及介绍)

    几个重要的概念: web的本质: 浏览器中输入网址敲回车发生了几件事? 1.浏览器向服务端发送请求 2.服务端接收请求 3.服务端返回相应的响应 4.浏览器接收响应  根据特定的规则渲染页面展示给用户 ...

  7. Shell遍历目前下后缀名为.xml的文件并替换文件内容

    1.shell查找 .xml文件 find /home/esoon/test/external/ -type f -name '*.xml' 2.替换方法 sed -i "s/10.111. ...

  8. redis day02

    Redis -带过期时间的key  如何删除掉的? 在redis内部有个  过期字典,所有带过期时间的都有过期字典 默认情况下 redis每秒会进行着10次过期字典的扫描,在每一次扫描过程里,执行如下 ...

  9. B-Tree(B树)原理及C++代码实现

    B树是一种平衡搜索树,它可以看做是2-3Tree和2-3-4Tree的一种推广.CLRS上介绍了B树目前主要针对磁盘等直接存取的辅存设备,许多数据库系统也利用B树或B树的变种来存储信息. 本文主要针对 ...

  10. Events|sample space|mutually exclusive events

    5.2Events The collection of all 52 cards—the possible outcomes—is called the sample space for this e ...