Redis变慢了?之三

Redis变慢了?之三

  • Redis变慢了
  • fork耗时
    • 优化方案
  • AOF
    • AOF策略
    • 对性能影响
  • 最后

Redis变慢了

Redis变慢上一篇文章地址:Redis变慢了?之二 这篇文章继续Redis变慢情况的分析。

fork耗时

在 Redis 中,fork 是一个非常重要的操作,它被用于创建子进程。Redis 使用 fork 来执行持久化操作,比如 RDB 和 AOF 持久化。在执行持久化操作期间,Redis 会 fork 出一个子进程,由子进程来执行实际的持久化操作,而父进程则继续处理客户端请求和其他操作。当 Redis 执行 fork 操作时,它会使用 Copy-on-Write 技术来避免不必要的内存复制,从而提高性能和效率。

需要注意的是,在 Redis 中使用 fork 操作时需要格外小心,因为 fork 操作会将整个父进程的内存空间复制一份到子进程中。如果 Redis 实例的内存非常大,那么 fork 操作可能会导致非常高的内存占用和系统负载,甚至可能导致系统崩溃。因此,在使用 Redis 进行持久化操作时,需要注意控制 Redis 实例的内存使用,以避免出现问题。

查看fork执行时长的命令可以用

127.0.0.1:6379> info

这是可以看到返回的Redis实例信息中上一次fork耗时,单位是微秒
在这里插入图片描述
在主进程fork子进程期间,整个Redis实例阻塞无法处理客户端请求,耗时越久对业务系统的影响也就越大。

优化方案

针对fork耗时产生的原因,那么首先就是控制Redis实例的内存,控制在一个合适的范围,比如10G以下,实例内存越大耗时越长;合理配置持久化策略,比如在从库执行持久化操作,如果只是拿Redis做缓存提高业务响应效率的话也可以不用开启数据持久化;最后就是Redis实例不要部署在虚拟机上,虚拟机比物理机fork耗时更久。

AOF

Redis AOF(Append Only File)是一种持久化方式,它会将所有写入 Redis 服务器的操作以追加的方式写入一个文件中,以此来保证数据在服务器重启后不会丢失。

AOF策略

AOF 持久化有三种策略,也就是appendfsync的三种值:
always:每个写命令都立刻同步到磁盘,保证最高的数据安全性,但是会降低 Redis 的性能。
everysec:每秒同步一次到磁盘,性能和安全性的平衡。
no:只在服务器退出时同步到磁盘,性能最高但数据安全性最差。

对性能影响

针对这三种策略对性能有不同的影响:
always:每处理一次写操作就会执行一次写入磁盘,由于都是在主线程执行,会拖慢Redis性能。
no:每次写操作只处理内存,刷盘由操作系统决定,有丢失数据的风险,如果是缓存数据可以设置为no。
everysec:主线程写完就返回,刷盘操作放在后台线程执行,每个1秒执行一次刷盘。虽然是最合适的刷盘方案,但是如果后台线程刷盘时IO负载很高,而主线程写操作继续,后台子线程由于磁盘负载过高,导致 fsync 发生阻塞,迟迟不能返回,那主线程在执行 write 系统调用时,也会被阻塞住,直到后台线程 fsync 执行完成后,主线程执行 write 才能成功返回。

简单说就是Redis 的 AOF 后台子线程刷盘操作,撞上了子进程 AOF fork,因此

# AOF rewrite 期间,AOF 后台子线程不进行刷盘操作

no-appendfsync-on-rewrite yes

最后

后续有时间会继续探索Redis 变慢原因方面的问题…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

已成功见刊检索的国际学术会议论文海报展示(2)

【先投稿先送审】第四届计算机、物联网与控制工程国际学术会议(CITCE 2024) 大会官网:www.citce.org 时间地点:2024年11月1-3日,中国-武汉 收录检索:EI Compendex,Scopus 主办单位:四川师范…

C# WPF入门学习主线篇(二十二)—— 样式(Styles)的定义和应用

C# WPF入门学习主线篇(二十二)—— 样式(Styles)的定义和应用 欢迎来到C# WPF入门学习系列的第二十二篇。本篇文章将详细介绍WPF中的样式(Styles)的定义和应用。样式在WPF中起到重要作用,通过样…

idea创建Mavenweb项目-提供Servlet 2024idea无法创建解决方式

idea社区版需要自己配置服务器需要去下载插件Tomcat Server 对服务器设置 idea无法创建servlet的问题是2023与2024版本idea做出了改动需要自己手动配置servlet文件 在设置中搜索template也就是模板,然后选择文件和代码板块,点击左上角的添加新的模板 名…

【ARM】MDK在debug模式下断点的类型

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解不同情况下,设置的断点的类型是什么。 2、 问题场景 在debug模式下,经常通过断点去调试代码。但是对于断点的类型不了解,不清楚断点为什么会被进入。不了解在不同语句或者情…

推荐一款功能强大的显示器!

最近在写项目开发文档,经常需要几个界面来回切换,真的深刻感受到了一台外接显示器对一名程序员来说有多重要了,画功能流程图的时候嫌弃自己的笔记本屏幕不够大,看代码的时候又在想要是有个旋转屏就好了,来回切换界面的…

Mac数据如何恢复?3 款最佳 Mac 恢复软件

如果您认为 Mac 上已删除的文件永远丢失了,那您就大错特错了!实际上,即使您清空了 Mac 上的垃圾箱,也有许多解决方案可以帮助您恢复已删除的文件。最好的解决方案之一是 Mac 恢复删除软件。最好的Mac 恢复删除应用程序可以轻松准确…

微信多开器

由于微信的限制,我们平时只能登录一个微信,要登录多个微信一般需要多台手机,很显然这种方法很费手机!!一个微信多开神器可以给你省下好几台手机钱,抓紧拉下来放手机里落灰http://www.xbydon.online/?p132 …

「51媒体」活动会议,展览展会,直播曝光的一种方法

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 我们在做活动会议,或者参加展览展会,需要进行直播的时候,可以通过一键同步多个媒体平台的方法,来扩大曝光,比如一场直播我们可…

JDK8和JDK17共存以及切换

1. 下载和安装 1.1下载安装JDK17 下载地址: https://www.oracle.com/cn/java/technologies/downloads/ 1.2安装jdk17 点击下一步 此处可以修改安装的目标位置,修改安装位置后,点击下一步 接下来及安装完成 注意事项 此时通过cmd命令java –version你会发现竟然出现了…

B 站开源专为角色扮演优化的模型

是 B 站开源的一系列的大语言模型,其中的 chat 版本训练时引入了互联网社区语料,趣味性明显增强; character 版本则为角色扮演做了优化。 现在,已经可以在 HF Space 上免费使用 Chat 和 角色扮演啦

【解决】法启动此程序,因为计算机中丢失vcruntime140_1.dll,尝试重新安装此程序以解决此问题【包括安装mysql在内的】

缺少vcruntime140_1.dll解决此问题的第一步找到该文件,有些dll修复工具是收费的,因此下面介绍几种比较简单有效而且免费的解决办法 方法1:重新安装Visual C Redistributable Packages 上面的安装包解决win7,8,10,11的…

海南聚广众达电子商务咨询有限公司抖音电商新引擎

在数字化浪潮席卷而来的今天,抖音电商作为新兴的商业模式,正以其独特的魅力和无限的潜力,引领着电子商务行业的革新与发展。海南聚广众达电子商务咨询有限公司,作为专注于抖音电商服务的领军企业,凭借其专业的团队、丰…

阿里云 debian10.3 sudo apt-get updat 报错的解决方案

阿里云全新的debian10.3(buster)镜像,却无法正常执行 sudo apt-get update。主要报错信息如下: Err:6 http://mirrors.cloud.aliyuncs.com/debian buster-backports Release404 Not Found [IP: 100.100.2.148 80] Err:3 http://mirrors.cloud.aliyuncs…

Vue的学习(6.20)

一、Vue的特点 1.采用组件化模式(xxx.vue包含htmlcssjs) 2.声明式编码,编码人员无需直接操作DOM,提高开发效率 3.使用虚拟DOM优秀的DIFF算法(DIFF是用于新旧虚拟DOM的比较),尽量复用DOM节点 …

【Gradio】Custom Components | Gradio组件关键概念 后端

Gradio组件关键概念 在本节中,我们将讨论Gradio中组件的一些重要概念。在开发自己的组件时,理解这些概念非常重要。否则,您的组件可能会与其他Gradio组件的行为大不相同! ✍️ 提示:如果你熟悉Gradio库的内部机制&…

这三种电容在PCB设计中怎么摆放?

电容在高速 PCB 设计中起着重要的作用,通常也是 PCB 上用得多的器件。在 PCB 中,电容通 常分为滤波电容、去耦电容、储能电容等。 1 电源输出电容,滤波电容 我们通常把电源模块输入、输出回路的电容称为滤波电容。简单理解就是,…

Python基础-引用参数、斐波那契数列、无极分类

1.引用参数的问题 (1)列表(list) 引用参数,传地址的参数,即list1会因list2修改而改变。 list1 [1,2,3,4] list2 list1 print(list1) list2[2] 1 print(list2) print(list1)非引用参数,不传…

HTML静态网页成品作业(HTML+CSS+JS)——我的家乡福州介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现图片轮播,共有3个页面。 二、作品…

Acrel-2000ES储能能量管理系统方案

应用场合 电池厂商、储能集成商等厂家所生产的储能一体柜能集成箱

AI融资热潮:Genspark、Finaloop等初创吸金不断!中国气象局发布三大AI模型

文章推荐 AI日报|跃问App上架加入AI助理竞争!GPTZero获千万美元A轮融资,创始人不到30岁! AI日报|Luma推出AI视频模型,又一Sora级选手登场?SD3 Medium发布,图中文效果改善明显 ⭐️…