Redis: userd_memory使用超出maxmemory
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的更多相关文章
- Redis 缓存过期(maxmemory) 配置/算法 详解
LRU(Least Recently Used) 最近最少使用算法是众多置换算法中的一种. Redis中有一个 maxmemory 概念,主要是为了将使用的内存限定在一个固定的大小.Redis 用到的 ...
- redis 使用内存超过maxmemory
redis使用量超过了maxmemory,这时无法增加最大内存,redis 实例没有可用内存,导致命令都会执行失败 (error) OOM command not allowed when used ...
- Redis内存使用达到maxmemory设定值后玩家数据无法写入解决 Redis数据“丢失”问题
Redis数据“丢失”问题 - CSDN博客 https://blog.csdn.net/real_myth/article/details/52582739 Redis内存使用达到maxmemory ...
- REdis之maxmemory解读
redis.conf中的maxmemory定义REdis可用最大物理内存,有多种书写方式,以下均为合法: maxmemory 1048576 maxmemory 1048576B maxmemory ...
- redis的maxmemory与maxmemory-policy关系
如果redis配置了maxmemory和maxmemory-policy策略,则当redis内存数据达到maxmemory时,会根据maxmemory-policy配置来淘汰内存数据,以避免OOM.r ...
- Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?
一.Redis 的默认配置 了解 Redis 的都知道,Redis 服务器状态有很多可配置的默认值. 例如:数据库数量,最大可用内存,AOF 持久化相关配置和 RDB 持久化相关配置等等.我相信,关于 ...
- Redis性能问题排查解决手册(七)
阅读目录: 性能相关的数据指标 内存使用率used_memory 命令处理总数total_commands_processed 延迟时间 内存碎片率 回收key 总结 性能相关的数据指标 通过Red ...
- Redis内存使用优化与存储
抄自http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage 本文将对Redis的常见数据类型的使用场景以 ...
- Redis缓存数据库详解
Redis最为常用的数据类型主要有以下五种: 1)String 2)Hash 3)List 4)Set 5)Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存 ...
随机推荐
- Mac电脑没声音了怎么办?苹果电脑没声音的解决方法
在使用Mac电脑的过程中,偶尔会出现电脑没声音?发出奇怪的声音?连接外部音频设备出问题等音频故障,遇到这种情况该怎么办呢?小编有妙招! 检查音量 首先检查Mac是否被静音,按住F12快捷键或滑动菜单栏 ...
- Debian8.8解决双系统访问windows磁盘时,有时能成功挂载,有时不能成功挂载的情况
1.确保在debian下安装了挂载工具.2.进入windows关闭windows快速启动功能,关闭办法是控制面板,在电源管理中,选择关闭盖子的功能,点击“更改不能更改的选项”,去掉快速启动的钩,重启进 ...
- 通过java语言实现MD5加密
通过java语言实现MD5加密public static String getMd5(String str) { try { MessageDigest md5 = MessageDigest.get ...
- replace|同时替换
a= 'eeekkksksksk' print a.replace('e','s').replace('s','k') #kkkkkkkkkkkk change={"e":&quo ...
- ios Alamofire网络插件的使用
pod 'Alamofire' import Alamofire let headers:HTTPHeaders = [ "aa":"bb" ] let par ...
- LinkedList源码剖析
LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全 ...
- python学习笔记(13)常用模块列表总结
os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.chdir() 改变当前工作 ...
- EXAM-2018-7-24
EXAM-2018-7-24 未完成 [ ] G 签到水题 A J F A:英文字母有2426个 J:注意long long D:Transit Tree Path 我直接套了单源最短路的一个模板,有 ...
- deeplearning.ai 序列模型 Week 2 NLP & Word Embeddings
1. Word representation One-hot representation的缺点:把每个单词独立对待,导致对相关词的泛化能力不强.比如训练出“I want a glass of ora ...
- JDBC之BaseDao类
package com.it.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prep ...