性能测试必备知识|如何管理Redis的内存?全是硬货

随着使用Redis的深入,我们不可避免的需要深入了解优化Redis的内存,本章将重点讲解如何管理Redis的内存。关注我们,每天都有技术好文分享给大家,小伙伴们觉得有用的话记得转发给身边的朋友哦。

一、内存消耗

当mem_fragmentation_ratio>1时,说明used_memory_rss-used_memory多出的部分内存并没有用于数据存储,而是被内存碎片所消耗,如果两者相差很大,说明碎片率严重。当mem_fragmentation_ratio<1时,这种情况一般出现在操作系统把Redis内存交换(Swap)到硬盘导致,出现这种情况时要格外关注,由于硬盘速度远远慢于内存,Redis性能会变得很差,甚至僵死。

Redis进程内消耗主要包括:自身内存+对象内存+缓冲内存+内存碎片,其中Redis空进程自身内存消耗非常少,通常used_memory_rss在3MB左右,used_memory在800KB左右,一个空的Redis进程消耗内存可以忽略不计。

缓冲内存主要包括:客户端缓冲、复制积压缓冲区、AOF缓冲区。客户端缓冲指的是所有接入到Redis服务器TCP连接的输入输出缓冲。输入缓冲无法控制,最大空间为1G,如果超过将断开连接。

复制积压缓冲区:Redis在2.8版本之后提供了一个可重用的固定大小缓冲区用于实现部分复制功能,根据repl-backlog-size参数控制,默认1MB。对于复制积压缓冲区整个主节点只有一个,所有的从节点共享此缓冲区,因此可以设置较大的缓冲区空间,如100MB,这部分内存投入是有价值的,可以有效避免全量复制AOF缓冲区:这部分空间用于在Redis重写期间保存最近的写入命令,AOF缓冲区空间消耗用户无法控制,消耗的内存取决于AOF重写时间和写入命令量,这部分空间占用通常很小。

Redis默认的内存分配器采用jemalloc,可选的分配器还有:glibc、tcmalloc。内存分配器为了更好地管理和重复利用内存,分配内存策略一般采用固定范围的内存块进行分配。内存碎片问题虽然是所有内存服务的通病,但是jemalloc针对碎片化问题专门做了优化,一般不会存在过度碎片化的问题,正常的碎片率(mem_fragmentation_ratio)在1.03左右。

一般以下场景容易出现高内存碎片问题:

频繁做更新操作,例如频繁对已存在的键执行append、setrange等更新操作。大量过期键删除,键对象过期删除后,释放的空间无法得到充分利用,导致碎片率上升。

出现高内存碎片问题时常见的解决方式如下:

数据对齐:在条件允许的情况下尽量做数据对齐,比如数据尽量采用数字类型或者固定长度字符串等,但是这要视具体的业务而定,有些场景无法做到。

安全重启:重启节点可以做到内存碎片重新整理,因此可以利用高可用架构,如Sentinel或Cluster,将碎片率过高的主节点转换为从节点,进行安全重启子进程内存消耗主要指执行AOF/RDB重写时Redis创建的子进程内存消耗。Redis执行fork操作产生的子进程内存占用量对外表现为与父进程相同,理论上需要一倍的物理内存来完成重写操作。

内存大页机制(Transport Huge Pages,THP),是linux2.6.38后支持的功能,该功能支持2MB的大页内存分配,默认开启。在redis.conf中增加了一个新的配置项“disable-thp”来控制THP是否开启。

disable-thp yes

子进程内存消耗总结如下:

1、Redis产生的子进程并不需要消耗1倍的父进程内存,实际消耗根据期间写入命令量决定,但是依然要预留出一些内存防止溢出。

2、需要设置sysctl vm.overcommit_memory=1允许内核可以分配所有的物理内存,防止Redis进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1130776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏开发者福音:一小时构建Z-Image-Turbo角色概念图生成系统

游戏开发者福音&#xff1a;一小时构建Z-Image-Turbo角色概念图生成系统 作为一名游戏开发者&#xff0c;你是否遇到过这样的困境&#xff1a;团队需要大量角色概念图来丰富游戏世界观&#xff0c;但美术资源有限&#xff0c;外包又耗时耗力&#xff1f;Z-Image-Turbo 正是为解…

得物Java面试被问:方法句柄(MethodHandle)与反射的性能对比和底层区别

&#x1f3af; 核心回答结构 一句话总结 反射是运行时自省&#xff0c;方法句柄是编译时链接的调用点。反射更灵活但性能差&#xff0c;方法句柄性能接近直接调用但类型安全严格。 &#x1f4ca; 性能对比表格 维度反射&#xff08;java.lang.reflect&#xff09;方法句柄&…

AI绘画新选择:无需代码基础,三步部署通义Z-Image-Turbo WebUI

AI绘画新选择&#xff1a;无需代码基础&#xff0c;三步部署通义Z-Image-Turbo WebUI 如果你是一名编程培训班的老师&#xff0c;想在课堂上快速展示AI绘画的魅力&#xff0c;却苦于复杂的本地环境搭建和冗长的依赖安装过程&#xff0c;那么通义Z-Image-Turbo WebUI镜像将是你的…

懒人专属:5步搞定阿里通义Z-Image-Turbo WebUI云端部署

懒人专属&#xff1a;5步搞定阿里通义Z-Image-Turbo WebUI云端部署 作为一名数字媒体专业的大学生&#xff0c;期末项目往往需要制作大量风格统一的插画。但普通笔记本电脑性能有限&#xff0c;本地运行AI绘图工具又需要复杂的配置。阿里通义Z-Image-Turbo WebUI镜像提供了一种…

告别CUDA地狱:用预配置Docker镜像一键部署Z-Image-Turbo开发环境

告别CUDA地狱&#xff1a;用预配置Docker镜像一键部署Z-Image-Turbo开发环境 如果你正在尝试搭建Z-Image-Turbo开发环境&#xff0c;却深陷CUDA版本冲突、依赖项不兼容的泥潭&#xff0c;这篇文章就是为你准备的。Z-Image-Turbo作为一款高效的文生图模型&#xff0c;对GPU环境…

Node.js用workerData传递数据

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Node.js Worker Threads 中的 workerData&#xff1a;高效数据传递的深度解析目录Node.js Worker Threads 中的 workerData&…

机车车载设备信号采集(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

目录 1 绪论 1 1.1 课题研究背景及意义 1 1.1.1 研究背景 1 1.1.2 研究意义 2 1.2国内外研究的现状 2 1.2.1总线技术发展 3 1.2.2 车载数据采集与通信装置 3 2 系统方案 5 2.1车载数据采集与通信装置整体架构 5 2.2 硬件模块选型 6 2.2.1工控主板 6 2.2.2 3G无线路由 7 2.2.3 G…

Z-Image-Turbo预设按钮原理:快速尺寸配置的技术实现

Z-Image-Turbo预设按钮原理&#xff1a;快速尺寸配置的技术实现 技术背景与设计动机 在AI图像生成领域&#xff0c;用户对操作效率和输出质量的平衡需求日益增长。阿里通义推出的Z-Image-Turbo模型以其高效的推理速度著称&#xff0c;但在实际使用中&#xff0c;用户频繁面临一…

2026年软考考试计划即将发布,这些变化要提前了解清楚!

元旦刚过&#xff0c;2026 年想考软考的同学注意啦&#xff01;每年备受关注的专业技术人员职业资格考试工作计划&#xff0c;马上就要和大家见面了。作为数百万人报名的热门考试&#xff0c;软考去年刚经历过调整&#xff0c;今年会不会有新变化&#xff1f;考试时间大概定在什…

【无人机编队】基于matlab单领导-双跟随无人机协同编队控制【含Matlab源码 14864期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

智能装备工厂研发部门如何选用设计云桌面实现降本增效

在制造业数字化转型浪潮中&#xff0c;智能装备工厂研发部门面临设计软件许可成本高、数据安全风险大、跨地域协作效率低等痛点。云飞云共享设计云桌面解决方案通过云端资源集中管理、高性能图形计算能力分配、数据全生命周期加密等技术创新&#xff0c;为装备研发提供了"…

M2FP模型部署的硬件选型建议

M2FP模型部署的硬件选型建议 &#x1f9e9; M2FP 多人人体解析服务&#xff1a;从算法到落地的关键挑战 随着AI视觉技术在虚拟试衣、智能健身、数字人生成等场景中的广泛应用&#xff0c;多人人体解析&#xff08;Human Parsing&#xff09; 正成为图像理解领域的重要能力。M2F…

低成本创业方案:用云端GPU+Z-Image-Turbo搭建AI头像生成服务

低成本创业方案&#xff1a;用云端GPUZ-Image-Turbo搭建AI头像生成服务 对于应届毕业生或初创团队来说&#xff0c;开发一个AI头像生成小程序是个不错的创业方向&#xff0c;但高昂的硬件成本和复杂的云服务计费模式往往让人望而却步。本文将介绍如何利用Z-Image-Turbo镜像在云…

阿里通义Z-Image-Turbo API开发:一小时搭建完整测试环境

阿里通义Z-Image-Turbo API开发&#xff1a;一小时搭建完整测试环境 作为一名后端工程师&#xff0c;最近我需要开发一个基于阿里通义Z-Image-Turbo的API服务。这个模型以其61.5亿参数却能媲美200亿参数模型的性能著称&#xff0c;生成512512图像仅需0.8秒&#xff0c;特别适合…

Python 里的“看门大爷”:彻底搞懂描述符 (Descriptors)

在 Python 里&#xff0c;通常我们访问对象的属性&#xff08;比如 obj.x&#xff09;&#xff0c;就像是从货架上直接拿东西&#xff0c;没有任何阻拦。 但是&#xff0c;如果你想在拿东西&#xff08;读取&#xff09;或放东西&#xff08;写入&#xff09;的时候搞点“小动作…

【成绩管理】基于matlab GUI学生成绩管理系统(含各学科最高低分 平均法 直方图 饼图)【含Matlab源码 14866期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

Z-Image-Turbo游戏角色立绘生成质量评估

Z-Image-Turbo游戏角色立绘生成质量评估 引言&#xff1a;AI角色生成的工程化实践需求 随着游戏开发周期不断压缩、美术资源成本持续攀升&#xff0c;AI辅助内容生成&#xff08;AIGC&#xff09;已成为游戏行业降本增效的关键技术路径。在众多应用场景中&#xff0c;角色立绘生…

1台高性能云图形工作站如何共享给6位SolidWorks设计师同时并发

在制造业数字化转型浪潮中&#xff0c;SolidWorks等三维设计软件的高效协作成为企业提升研发效率的关键。要将1台高性能云图形工作站通过云飞云共享云桌面共享给6位SolidWorks设计师同时并发使用&#xff0c;需从硬件配置、资源管理、软件部署、网络优化、安全管控五个方面进行…

科哥版Z-Image-Turbo社区贡献指南:快速搭建开发环境

科哥版Z-Image-Turbo社区贡献指南&#xff1a;快速搭建开发环境 如果你是一名开源贡献者&#xff0c;想要为科哥的Z-Image-Turbo二次开发版本贡献力量&#xff0c;但苦于配置开发环境和理解代码结构需要花费大量时间&#xff0c;那么这篇文章就是为你准备的。本文将详细介绍如何…

AI绘画商业化第一步:如何用预配置镜像快速部署Z-Image-Turbo WebUI服务

AI绘画商业化第一步&#xff1a;如何用预配置镜像快速部署Z-Image-Turbo WebUI服务 对于小型设计公司而言&#xff0c;将AI绘画能力整合到工作流程中能显著提升创意生产效率。Z-Image-Turbo作为一款高性能文生图模型&#xff0c;通过预配置镜像可实现零基础部署&#xff0c;本…