当前位置: 首页 > news >正文

广州网站制作公司联系方式中国十大产品设计公司

广州网站制作公司联系方式,中国十大产品设计公司,企业黄页信息查询,江西软件职业技术大学前言上周刚来了个应届小师弟#xff0c;组长说让我带着#xff0c;周二问了我这样一个问题#xff1a;师兄啊#xff0c;我用top命令看了下服务器的内存占用情况#xff0c;发现Redis内存占用严重#xff0c;于是我就删除了大部分不用的keys#xff0c;为什么内存占用还… 前言上周刚来了个应届小师弟组长说让我带着周二问了我这样一个问题师兄啊我用top命令看了下服务器的内存占用情况发现Redis内存占用严重于是我就删除了大部分不用的keys为什么内存占用还是很严重并没有释放呢嗯为什么呢今天就带着这个问题来介绍一下如何正确释放Redis的内存。什么是内存碎片内存碎片这个概念应该不是第一听说了熟悉JVM或者操作系统的应该都熟悉以火车卖票为例一个车厢128个车位由于高峰期只剩余两个位置了但是此时三个人想要坐在一起能够吹吹牛批喝喝酒的那么这三个人肯定不会买这节车厢的两个位置了此时这两个位置可以称之为座位碎片 。操作系统中对于内存分配也是一样的比如应用需要申请一块连续N个字节的空间虽然剩余内存总量大于N个字节但是没有一块连续的内存空间是N个字节那么剩余的空间就是内存碎片。如下图上图中的空闲3个字节和空闲2个字节都是内存碎片。那么什么原因会造成内存碎片呢这个其实大致分为两个原因一个是操作系统的内存分配策略一个是Redis自身原因下面就这两个原因详细分析。内存分配器的分配策略内存分配器的分配策略一般是按照固定大小来分配内存而不是按照应用程序申请的内存空间按需分配。比如8字节、16字节、32字节......Redis提供了多种的内存分配策略比如libc、jemalloc、tcmalloc默认使用jemalloc。jemalloc这种分配策略是按照固定的空间分配比如8字节、32字节....2KB、4KB等。当应用程序申请的内存接近某个固定值的时候jemalloc则会分配固定的大小。比如申请了6字节则会分配8字节的空间。这种分配的方式的好处很明显则会减少内存分配的次数比如申请了20字节的内存实际分配的是32字节的内存空间当应用再写入10字节的数据时则不会再次分配剩余的12字节足够用了。这样就避免了一次的内存分配。如下图但是坏处也很明显申请的和分配的空间不一样则剩余的空间很可能形成内存碎片一旦内存碎片多了内存利用率也会随之降低这是很可怕的。Redis自身的原因Redis作为键值对存储的数据库本身键值对的大小就是不确定的正如上面的例子中Redis申请了20字节的空间但实际分配却是32字节那么剩余的12字节则会被闲置成为内存碎片。如下图上图中剩余12个字节空间则是闲置的很有可能成为内存碎片因此键值对大小不同则会造成一定的内存碎片这是第一个原因。第二个原因其实理解起来很简单键值对的修改或者删除肯定会造成空间的扩容或者释放一方面如果修改后的键值对变大或者变小了势必会将占用的空间扩大或者释放不用的空间如下图上图中键值对修改后变小了从原来的10个字节变成了7个字节从而释放了3个字节此时剩余了5个字节的空闲空间。另一方面如果键值对删除了则会释放掉占用的空间形成空闲空间。如何判断存在内存碎片这个对于运维人员来说很重要一旦出现Redis运行缓慢或者阻塞了一定需要先判断内存的占用情况而不是说胡乱的重启Redis。Redis自身提供了INFO命令可以用来查询内存的使用情况命令如下INFO memory# Memoryused_memory:1073741736used_memory_human:1024.00Mused_memory_rss:1997159792used_memory_rss_human:1.86G…mem_fragmentation_ratio:1.86上面的各种属性含义如下mem_fragmentation_ratio这个指标很清楚的展示了当前内存的碎片率比如Redis申请了1000字节但是操作系统实际分配的内存1800个字节则mem_fragmentation_ratio1800/10001.8从上文也知道了由于内存分配器的局限性实际分配的内存绝大部分都是大于实际申请的内存则如何通过mem_fragmentation_ratio这个值来衡量呢这个值的范围在多少是正常的呢作者这里参照了许多开发人员的建议列出了以下经验阀值11.5在这个范围内是合理的毕竟大部分情况下操作系统分配的内存总是总是大于实际申请的空间。1.5这表明内存碎片率已经超过50%此时需要采取一些措施来降低碎片率了。1what表明实际分配的内存小于申请的内存了很显然内存不足了这样会导致部分数据写入到Swap中之后Redis访问Swap中的数据时延迟会变大性能会降低。如何清理内存碎片既然存在内存碎片那么的一定有方法清除内存碎片最简单的方法则是重启Redis但是这也存在一些风险如下如果Redis未持久化则数据会丢失(忽略从后端恢复)即使持久化了但是恢复数据时长不定这个要根据AOF和RDB文件大小决定在恢复阶段则无法提供服务。好在Redis 4.0-RC3版本之后Redis自身提供了一种清除内存碎片的方法清除的原理很简单通过复制拷贝将不连续的存放的数据搬到一起形成一块连续的内存空间如下图如上图清除之前A和B不是连续的中间隔着两个字节空闲1但是在执行清除内存碎片操作之后Redis拷贝了B到空闲1释放掉之前B的空间此时空闲1和空闲2则变成了连续的空闲空间了。那么问题来了这种方式固然好但是对于单线程的Redis来说通过这种拷贝复制的方式显然是一种耗时的操作性能大大降低那么有什么好的方法呢Redis提供了参数配置可以控制清除内存碎片的时机命令如下config set activedefrag yes以上命令启动自动清理但是具体什么时候清理还要受以下两个参数的影响active-defrag-ignore-bytes 400mb如果内存碎片达到了400mb开始清理(自定义)active-defrag-threshold-lower 20内存碎片空间占操作系统分配给 Redis 的总空间比例达到20%时开始清理(自定义)以上两个参数只有全部满足才会开始清理除了以上触发清理内存碎片的参数Redis还提供了两个参数来保证在清理过程中不影响处理正常的请求如下active-defrag-cycle-min 25表示自动清理过程所用 CPU 时间的比例不低于 25%保证清理能正常开展active-defrag-cycle-max 75表示自动清理过程所用 CPU 时间的比例不高于 75%一旦超过就停止清理从而避免在清理时大量的内存拷贝阻塞 Redis导致响应延迟升高。以上两个参数控制了清理过程中的CPU时间占比保证了正常处理请求不受影响总结本文以师弟的一个疑问开头介绍了删除数据导致内存占用还是很高的原因是存在内存碎片导致内存碎片大致分为两个原因如下内存分配策略局限性一般都会分配固定的空间大小导致实际分配的内存空间大于实际申请的从而多出了许多不连续的空闲内存块。键值对的修改、删除导致了内存的扩容或者释放导致多余的不连续的空闲内存块。介绍了如何通过INFO memory命令查看内存的碎片率通过mem_fragmentation_ratio的经验阀值来判断异常。介绍了Redis清理内存碎片的方式以、自动清理的两个触发条件、保证正常处理请求的两个控制CPU时间的参数。另外作者已经完成了两个专栏的文章Mybatis进阶、Spring Boot 进阶 已经将专栏文章整理成书有需要的公众号回复关键词Mybatis 进阶、Spring Boot 进阶免费获取。往期推荐给你一个亿的keysRedis如何统计《Spring Boot 进阶》肝了五万多字的专栏文章整理成册免费获取程序员需知的 58 个网站宕机了Redis数据丢了怎么办单线程的Redis有哪些 慢 动作头秃系列二十三张图带你从源码分析Spring Boot 启动流程~
http://www.huolong8.cn/news/273136/

相关文章:

  • 北海市做网站的公司织梦学校网站模板
  • 校园门户网站设计论文旅游网站设计页面
  • 旅游的网站怎么做的洛阳建设信息网站
  • 淘宝做网站的多少钱深圳房产网
  • 网站站内搜索制作网站建设工作室需要哪些设备
  • 微网站需要域名吗湖北网
  • 太原建设厅官方网站网站缓存优化怎么做
  • 政务服务 网站 建设方案com域名查询官网
  • 网站维护工单幼儿活动设计方案模板
  • 二七区建设局网站免费网站建设链接很长 知呼
  • 房地产网站模板库工作心得体会感悟简短
  • asp.net 做电子购物网站的网银结算功能如何实现的建设网站的目的是什么
  • 通辽市北京网站建设百度推广登录账号首页
  • 中国建设银行湖北省分行网站vi设计 站酷
  • 哪种网站名称容易通过备案审核dw网站模版
  • 网络专业的网站建设wordpress漂亮轮播代码
  • 辽宁省城乡和建设厅网站做护理简历的网站
  • 从零开始建设企业网站建筑方面的网站
  • 网站 微信小程序怎么做上海百度seo点击软件
  • 网站的功能和作用罗定市住房和城乡建设局网站
  • 怎样建立网站卖东西wordpress5.1用什么php版本
  • 怎么自己制作个网站网站设计培训班如何
  • 手机编程网站全网普盖网站建设河南
  • 建站的好公司淄博论坛网站建设
  • 做喷绘可以在那个网站找网站建设内部流程图
  • 建设企业网站哪家好上海建设咨询网
  • 做官方网站公司网站app的区别是什么意思
  • 广州网站网站建设企业网站建设的定位
  • 网站续费收多少合适深圳市公司有哪些公司
  • 移动网站建设制作wordpress网页图片无法显示