范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Redis的数据被删除,内存占用还这么大?

  操作系统分配给 Redis 的内存有 6GB,通过指标 used_memory_human 发现存储数据只使用了 4GB,为何会这样?为何无法保存数据?
  通过  CONFIG SET maxmemory 100mb 或者在 redis.conf  配置文件设置 maxmemory 100mb  Redis 内存占用限制。当达到内存最大值,会触发内存淘汰策略删除数据。
  除此之外,当 key 达到过期时间,Redis 会有以下两种删除过期数据的策略:  后台定时任务选取部分数据删除;  惰性删除。
  假设 Redis 实例保存了 5GB 的数据,现在删除了 2GB 数据,Redis 进程占用的内存一定会降低么?(也叫做 RSS,进程消耗内存页数)。
  答案是:可能依然占用了大约 5GB 的内存,即使 Redis 的数据只占用了 3GB 左右。
  大家一定要设置  maxmemory, 否则 Redis 会继续为新写入的数据分配内存,无法分配就会导致应用程序报错,当然不会导致宕机。 释放的内存去哪了
  明明删除了数据,使用 top 命令查看,为何还是占用了那么多内存?
  内存都去哪了?使用  info memory  命令获取 Redis 内存相关指标,我列举了几个重要的数据: 127.0.0.1:6379> info memory # Memory used_memory:1132832  // Redis 存储数据占用的内存量 used_memory_human:1.08M  // 人类可读形式返回内存总量 used_memory_rss:2977792  // 操作系统角度,进程占用的物理总内存 used_memory_rss_human:2.84M // used_memory_rss 可读性模式展示 used_memory_peak:1183808 // 内存使用的最大值,表示 used_memory 的峰值  used_memory_peak_human:1.13M  // 以可读的格式返回 used_memory_peak的值 used_memory_lua:37888   // Lua 引擎所消耗的内存大小。 used_memory_lua_human:37.00K maxmemory:2147483648    // 能使用的最大内存值,字节为单位。 maxmemory_human:2.00G  // 可读形式 maxmemory_policy:noeviction // 内存淘汰策略  // used_memory_rss / used_memory 的比值,代表内存碎片率 mem_fragmentation_ratio:2.79
  Redis 进程内存消耗主要由以下部分组成:  Redis 自身启动所占用的内存;  存储对象数据内存;  缓冲区内存:主要由 client-output-buffer-limit 客户端输出缓冲区、复制积压缓冲区、AOF 缓冲区。  内存碎片。
  内存占用
  Redis 自身空进程占用的内存很小可以忽略不计,对象内存是占比最大的一块,里面存储着所有的数据。
  缓冲区内存在大流量场景容易失控,造成 Redis 内存不稳定,需要重点关注。
  内存碎片过大会导致明明有空间可用,但是却无法存储数据。
  碎片 = used_memory_rss 实际使用的物理内存(RSS 值)除以 used_memory 实际存储数据内存。  什么是内存碎片
  内存碎片会造成明明有内存空间空闲,可是却无法存储数据 。举个例子,你跟漂亮小姐姐去电影院看电影,肯定想连在一块。
  假设现在有 8 个座位,已经卖出了 4 张票,还有 4 张可以买。可是好巧不巧,买票的人很奇葩,分别间隔一个座位买票。
  即使还有 4 个座位空闲,可是你却买不到两个座位连在一块的票,厚礼蟹!
  内存碎片 内存碎片形成原因
  内存碎片是什么原因导致呢?
  主要有两个原因:  内存分配器的分配策略。  键值对的大小不一样和删改操作:Redis 频繁做更新操作、大量过期数据删除,释放的空间(不够连续)无法得到复用,导致碎片率上升。
  接下来我分别探讨实际发生的原因……  内存分配器的分配策略
  Redis 默认的内存分配器采用 jemalloc,可选的分配器还有:glibc、tcmalloc。
  内存分配器并不能做到按需分配,而是采用固定范围的内存块进行分配。
  例如 8 字节、16 字节…..,2 KB,4KB,当申请内存最近接某个固定值的时候,jemalloc 会给它分配最接近固定值大小的空间。
  这样就会出现内存碎片,比如程序只需要 1.5 KB,内存分配器会分配 2KB 空间,那么这 0.5KB 就是碎片。
  这么做的目的是减少内存分配次数 ,比如申请 22 字节的空间保存数据,jemalloc 就会分配 32 字节,如果后边还要写入 10 字节,就不需要再向操作系统申请空间了,可以使用之前申请的 32 字节。
  删除 key 的时候,Redis 并不会立马把内存归还给操作系统 ,出现这个情况是因为底层内存分配器管理导致,比如大多数已经删除的 key 依然与其他有效的 key 分配在同一个内存页中。
  另外,分配器为了复用空闲的内存块,原有 5GB 的数据中删除了 2 GB 后,当再次添加数据到实例中,Redis 的 RSS 会保持稳定,不会增长太多。
  因为 内存分配器基本上复用了之前删除释放出来的 2GB 内存。  键值对大小不一样和删改操作
  由于内存分配器是按照固定大小分配内存,所以通常分配的内存空间比实际数据占用的大小多一些,会造成碎片,降低内存的存储效率。
  另外,键值对的频繁修改和删除,导致内存空间的扩容和释放,比如原本占用 32 字节的字符串,现在修改为占用 20 字节的字符串,那么释放出的 12 字节就是空闲空间。
  如果下一个数据存储请求需要申请 13 字节的字符串,那么刚刚释放的 12 字节空间无法使用,导致碎片。
  碎片最大的问题:空间总量足够大,但是这些内存不是连续的,可能大致无法存储数据。  内存碎片解决之道
  那该如何解决呢?
  首先要确定是否发生了内存碎片,重点关注前面  INFO memory  命令提示的 mem_fragmentation_ratio  指标,表示内存碎片率: mem_fragmentation_ratio = used_memory_rss/ used_memory
  如果 1 < 碎片率 < 1.5,可以认为是合理的,而大于 1.5 说明碎片已经超过 50%,我们需要采取一些手段解决碎片率过大的问题。  重启大法
  最简单粗暴的方式就是重启,如果没有开启持久化,数据会丢失。
  开启持久化的话,需要使用 RDB 或者 AOF 恢复数据,如果只有一个实例,数据大的话会导致恢复阶段长时间无法提供服务,高可用大打折扣。
  咋办呢?自动清理内存碎片
  既然你都叫我靓仔了,就倾囊相助告诉你终极杀招:Redis 4.0 版本后,自身提供了一种内存碎片清理机制。
  怎么清理呢?
  很简单,还是上面的例子,想要买两张连在一块的电影票。与与别人沟通调换下位置,就实现了。
  对于 Redis 来说,当一块连续的内存空间被划分为好几块不连续的空间的时候,操作系统先把数据以依次挪动拼接在一块,并释放原来数据占据的空间,形成一块连续空闲内存空间。
  如下图所示:
  碎片清理 自动清理内存碎片的代价
  自动清理虽好,可不要肆意妄为,操作系统把数据移动到新位置,再把原有空间释放是需要消耗资源的。
  Redis 操作数据的指令是单线程,所以在数据复制移动的时候,只能等待清理碎片完成才能处理请求,造成性能损耗。
  如何避免清理碎片对性能的影响又能实现自动清理呢?
  好问题,通过以下两个参数来控制内存碎片清理和结束时机,避免占用 CPU 过多,减少清理碎片对 Redis 处理请求的性能影响。
  开启自动内存碎片清理  CONFIG SET activedefrag yes
  这只是开启自动清理,何时清理要同时满足以下两个条件才会触发清理操作。
  清理的条件
  active-defrag-ignore-bytes 200mb :内存碎片占用的内存达到 200MB,开始清理;
  active-defrag-threshold-lower 20 :内存碎片的空间占比超过系统分配给 Redis 空间的 20% ,开始清理。
  避免对性能造成影响
  清理时间有了,还需要控制清理对性能的影响。由一项两个设置先分配清理碎片占用的 CPU 资源,保证既能正常清理碎片,又能避免对 Redis 处理请求的性能影响。
  active-defrag-cycle-min 20 :自动清理过程中,占用 CPU 时间的比例不低于 20%,从而保证能正常展开清理任务。
  active-defrag-cycle-max 50 :自动清理过程占用的 CPU 时间比例不能高于 75%,超过的话就立刻停止清理,避免对 Redis 的阻塞,造成高延迟。 总结
  如果你发现明明 Redis 存储数据的内存占用远小于操作系统分配给 Redis 的内存,而又无法保存数据,那可能出现大量内存碎片了。
  通过  info memory  命令,看下内存碎片mem_fragmentation_ratio  指标是否正常。
  那么我们就开启自动清理并合理设置清理时机和 CPU 资源占用,该机制涉及到内存拷贝,会对 Redis 性能造成潜在风险。
  如果遇到 Redis 性能变慢,排查下是否由于清理碎片导致,如果是,那就调小  active-defrag-cycle-max  的值。
  原文链接:https://mp.weixin.qq.com/s/uKIANutWrFKtRT5ut99H_w

滑出你的风采,魅动APEX真无线蓝牙耳机随着无线蓝牙耳机技术的不断成熟,无线蓝牙耳机的性价比越来越高,耳机已经成为了人们日常生活中除手机之外的必需品和快消品,例如我现在是基本一年内会换上3副以上的耳机,因为每一款耳机的听待产时的突发情况待产过程中可能会发生意想不到的状况,孕妈妈千万不要害怕,因为当了解了这些状况之后,你会明白不管是什么情况,准爸爸和医生都会让你的宝宝平安降生的。待产时如有突发状况,可选择剖宫产分娩不认真刷牙的后果,你承担得起吗?因为家里爸妈姐的牙都不好,一直以为是遗传,所以自己蛀牙也没当回事。趁着这次牙疼的机会,狠心来好好治疗,顺便把孩子和老公的牙也让医生好好看下。一看不得了,孩子才十岁,已经有三颗龋牙。钙,你补对了吗?钙,你补对了吗?对补钙最感兴趣的莫过于家长了,而且家长喜欢拿自己孩子和其他孩子对比,如果自己小孩出牙晚头发稀少个子不高就觉得是缺钙,而自作主张买钙片给小孩吃。家长们不知道如果钙片吃英国儿童文学把最好的给孩子作者张生珍(北京语言大学教授博士生导师)英国文学在世界文学版图上占据重要地位,英国儿童文学也有着重要的影响力。它具有内容丰富类型多样的特点,其主要的儿童文学类型均得到长足发展。现代每40分钟盖帽5。3次!19岁新人或成火箭第1选择?他来伍德该让位了与德安东尼喜欢使用卡佩拉布莱克这些防守型中锋不一样,新任火箭队主帅塞拉斯虽然也喜欢使用大个子球员坐镇内线中锋位置,但塞拉斯喜欢使用的中锋球员类型,与德安东尼完全不一样。在德安东尼的键盘侠登峰造极哈登王者归来费城ampampamp火箭球迷比着谁更开心(点击上方关注键盘侠,获悉更多有趣资讯。)赛后贴东部半决赛,费城76人主场116108战胜迈阿密热火,扳平大比分22。双方关键球员数据热火(22)巴特勒40分3篮板6助攻2封盖,阿天舟四号货运飞船发射任务取得圆满成功央广网文昌5月10日消息(记者蔡文娟)北京时间2022年5月10日1时56分,搭载天舟四号货运飞船的长征七号遥五运载火箭,在我国海南省文昌航天发射场点火发射,约10分钟后,飞船与火双赢!火箭黄蜂酝酿4换1交易!三悍将首轮,布里奇斯值得吗?据BR记者杰克费舍尔透露,黄蜂队天才侧翼布里奇斯希望在这个休赛期和球队签署一份5年价值1。73亿美元的顶薪续约合同。他在上个赛季曾经拒绝了一份由老板迈克尔乔丹亲自开出的4年6000天舟四号整装待发,三大优势对标西方飞船,走中国人自己的路天舟四号现在补给的物资,是要给神舟十四号乘组使用的,而神舟十四号乘组在轨驻留期间,将见证问天梦天两个20吨级实验室的对接。可以说这次补给任务至关重要,也算是为空间站建造阶段开了一个基德一场很棒的团队胜利希望我们6场比赛解决战斗直播吧5月9日讯季后赛次轮G4比赛中,太阳以101111不敌独行侠,总比分被扳成22平。赛后,独行侠主帅基德接受了媒体采访。这是一场很棒的团队胜利回到主场后我们每次都讨论接下来的一
安吉星手机应用10。0落地,新界面带来更多功能体验近期,安吉星手机应用APP10。0版本落地应用,新版本的最大亮点在于采用了全新的架构,使用起来更加清晰直观,更加符合智能手机的操作习惯。同时,全新的UI界面也更符合年轻消费者的喜好三大晶圆厂决战2纳米来源内容来自镜报,谢谢。尽管总体经济利空不断,但面对智慧型手机等消费性电子产品需求萎缩,全球晶圆代工龙头台积电今年5月营收,依旧缴出亮丽的成绩单,以新台币1,857亿500万元再创美团王兴,智能汽车的隐秘巨头美团,智能汽车的隐秘巨头1973年在汽车行业历史上是个分水岭,2023年左右可能也会是。2020年6月,美团王兴在社交媒体上这样写道,当时他已给理想汽车个人投资了3亿美元,一个月多美团一季度亏36亿!骑手季节性补贴增加,收入提高?摘要打工不易撰文蜜姐2022年,我们被迫又见证了不少历史,无论对于企业还是普通人来说,都挺难的。近期,美团发布了2022年一季度业绩公告,亏损扩大,艰难的日子是否就要过去,还是会继拒绝勇士续约合同,如今沦落到无球可打,他做了生涯最错误的决定勇士队目前已经打进了总决赛,目前他们与凯尔特人队打成22平,勇士队目前握有主场优势,今年他们还是有很大概率能够赢下总冠军的。现在的勇士队毫无疑问是整个篮球世界的焦点,其他28支球队勇士喊话G5!库里送利好,科尔请求嘴哥,2将做牺牲,格林出承诺明天就是总决赛G5的比赛了,这场比赛对于双方都是一大焦点。而库里第一时间送上利好,他表示我的脚部感觉挺好,我们油箱里还有很多油。上场比赛库里暴走,目前来看,伤势对于他的影响并不是很3年砸入13亿争冠,勇士老板为何有这个底气?看G5门票收入秒懂杜兰特离开之后,很多球迷觉得属于勇士队的时代过去了,毕竟当时的库里和汤普森都遭遇了伤病,特别是汤普森这边连续两年遭遇了赛季报销,这也让很多球迷认为勇士队想要再度崛起冲冠几乎是不可能格林交易方案!美媒为勇士支招,打包榜眼换伍德,戈登沦为筹码?4分!9分!2分!2分!这就是追梦格林在总决赛前四场交出的得分表现!32岁真是一个神奇的年龄,哈登在本赛季迎来悬崖式的下滑,没有人觉得他还能够打出火箭登的表现,身体素质也出现严重下勇士消息库里有效命中率炸裂,威金斯动情发声,天王山出场更新北京时间6月13日,远在大洋彼岸的金州勇士传来了3条消息,一起来看看吧。库里有效命中率炸裂截止目前,总决赛已经打完了4场比赛,勇士球星斯蒂芬库里发挥出色,场均可以轰下34。3分6。名嘴爆老詹两次示好库里有目的,正密谋加盟勇士,浓眉懒散有原因虽然没有打进进季后赛,甚至连附加赛都没有资格,但是老詹依然是篮球圈内最被报道最多的运动员之一,究其原因无过其二,第一就是这离不开老詹的江湖地位,正所谓无詹姆斯不篮球吗,那么第二呢就寿命短的人,常具备的8个共性,对照自查,如果有越早改正越好一个人,没有什么比健康更重要。欢迎您关注我,一起聊聊健康的话题!周末回到农村老家,去看望了家族中一位近亲的姑姑一家。老太太虽然已经96岁高龄,老先生比姑姑还大3岁,接近百岁老人了,