返回顶部
首页 > 资讯 > 数据库 >Redis中AOF有哪些潜在的阻塞点
  • 360
分享到

Redis中AOF有哪些潜在的阻塞点

2024-04-02 19:04:59 360人浏览 安东尼
摘要

这篇文章给大家分享的是有关Redis中AOF有哪些潜在的阻塞点的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AOF有哪些潜在的阻塞点1. Redis采用fork子进程重写AOF文

这篇文章给大家分享的是有关Redis中AOF有哪些潜在的阻塞点的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

AOF有哪些潜在的阻塞点

1. Redis采用fork子进程重写AOF文件时,有潜在的阻塞风险

1)、fork子进程

fork子进程,fork这个瞬间一定是会阻塞主线程的(注意,fork时并不会一次性拷贝所有内存数据给子进程),fork采用操作系统提供的写实复制(Copy On Write)机制,就是为了避免一次性拷贝大量内存数据给子进程造成的长时间阻塞问题。【相关推荐:Redis视频教程

但fork子进程需要拷贝进程必要的数据结构,其中有一项就是拷贝内存页表(虚拟内存和物理内存的映射索引表),这个拷贝过程会消耗大量CPU资源,拷贝完成之前整个进程是会阻塞的,阻塞时间取决于整个实例的内存大小,实例越大,内存页表越大,fork阻塞时间越久

拷贝内存页表完成后,子进程与父进程指向相同的内存地址空间,也就是说此时虽然产生了子进程,但是并没有申请与父进程相同的内存大小。

那什么时候父子进程才会真正内存分离呢?

“写实复制”顾名思义,就是在写发生时,才真正拷贝内存真正的数据,这个过程中,父进程也可能会产生阻塞的风险,就是下面介绍的场景

2)、AOF重写中父进程有写入的场景

fork出的子进程指向与父进程相同的内存地址空间,此时子进程就可以执行AOF重写,把内存中的所有数据写入到AOF文件中。

但是此时父进程依旧是会有流量写入的,如果父进程操作的是一个已经存在的key,那么这个时候父进程就会真正拷贝这个key对应的内存数据,申请新的内存空间,这样逐渐地,父子进程内存数据开始分离,父子进程逐渐拥有各自独立的内存空间。因为内存分配是以页为单位进行分配的,默认4k,如果父进程此时操作的是一个bigkey,重新申请大块内存耗时会变长,可能会产生阻塞风险。

另外,如果操作系统开启了内存大页机制(Huge Page,页面大小2M),那么父进程申请内存时阻塞的概率将会大大提高,所以在Redis机器上需要关闭Huge Page机制。Redis每次fork生成RDB或AOF重写完成后,都可以在Redis log中看到父进程重新申请了多大的内存空间。

3)、AOF重写为什么不复用AOF本身日志呢

AOF重写不复用AOF本身的日志

  • 一个原因是父子进程写同一个文件必然会产生竞争问题,控制竞争就意味着会影响父进程的性能。

  • 二是如果AOF重写过程中失败了,那么原本的AOF文件相当于被污染了,无法做恢复使用。所以Redis AOF重写一个新文件,重写失败的话,直接删除这个文件就好了,不会对原先的AOF文件产生影响。等重写完成之后,直接替换旧文件即可。

感谢各位的阅读!关于“Redis中AOF有哪些潜在的阻塞点”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: Redis中AOF有哪些潜在的阻塞点

本文链接: https://lsjlt.com/news/70305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis中AOF有哪些潜在的阻塞点
    这篇文章给大家分享的是有关Redis中AOF有哪些潜在的阻塞点的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AOF有哪些潜在的阻塞点1. Redis采用fork子进程重写AOF文...
    99+
    2024-04-02
  • Redis阻塞的情况有哪些
    这篇文章主要介绍“Redis阻塞的情况有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis阻塞的情况有哪些”文章能帮助大家解决问题。命令阻塞使用不当的命令造成客户端阻塞:keys * :获...
    99+
    2023-07-05
  • php程序阻塞与非阻塞的区别有哪些
    本篇内容主要讲解“php程序阻塞与非阻塞的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php程序阻塞与非阻塞的区别有哪些”吧!PHP程序阻塞和非阻塞的区别是:阻塞调用结果返回之前,当...
    99+
    2023-06-29
  • Redis中需要AOF重写的原因有哪些
    AOF文件过大:随着Redis的运行,AOF文件会不断增长,可能达到非常大的规模,导致占用大量磁盘空间。 AOF文件过期:A...
    99+
    2024-05-07
    Redis
  • redis的rdb和aof之间有哪些区别
    这篇文章主要介绍redis的rdb和aof之间有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!持久化RDB和AOF的区别RDB持久化是指在指定的时间间隔内将内存中的数据集快照...
    99+
    2024-04-02
  • Java异步非阻塞编程的方式有哪些
    这篇文章主要讲解了“Java异步非阻塞编程的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java异步非阻塞编程的方式有哪些”吧!1 服务端执行,最简单的同步调用方式:缺陷:服务端...
    99+
    2023-06-20
  • Linux中pstree的潜在用途有哪些
    查看进程树结构:pstree命令可以显示当前系统中所有进程的层次结构,方便用户了解各个进程之间的关联关系。 分析进程之间的父...
    99+
    2024-04-02
  • 使用strace查找Emacs启动阻塞的原因有哪些
    这篇文章给大家分享的是有关使用strace查找Emacs启动阻塞的原因有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于使用了 spacemacs 的配置,配置上比较复杂,不太想通过实验缩减配置的方式来摸索...
    99+
    2023-06-16
  • 泛型在golang中有哪些潜在挑战?
    尽管泛型在 go 中很强大,但它也带来了一些潜在挑战,包括:约束限制,仅允许在特定类型上使用泛型。代码生成,可能会导致代码膨胀和编译时间增加。向后兼容性,对于 go 1.18 之前的代码...
    99+
    2024-05-03
    golang 泛型
  • redis的优点有哪些
    这篇文章将为大家详细讲解有关redis的优点有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。redis是Nosql数据库中使用较为广泛的非关系型内存数据...
    99+
    2024-04-02
  • 如何在Redis中实现分布式锁的阻塞等待机制
    在Redis中实现分布式锁的阻塞等待机制可以使用Redis的BLPOP命令和SETNX命令结合实现。下面是一种基本的实现方式: 使...
    99+
    2024-04-09
    Redis
  • redis中aof和rdb是什么以及两者区别有哪些
    这篇文章给大家介绍redis中aof和rdb是什么以及两者区别有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 redis的aof和rdb持久化1.RD...
    99+
    2024-04-02
  • 基于Log4j2阻塞业务线程引发的问题有哪些
    小编给大家分享一下基于Log4j2阻塞业务线程引发的问题有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!问题描述问题1异步日志打印在ringbuffer满了之后2.7版本的log4j2会默认使用当前线程进行打印日志。即...
    99+
    2023-06-22
  • redis快的特点有哪些
    小编给大家分享一下redis快的特点有哪些,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! Redis是一个由ANSI C语言编写,性能优秀、支持网络、可持久化的K-K内存数据库,并提...
    99+
    2024-04-02
  • Redis的优缺点有哪些
    这篇文章将为大家详细讲解有关Redis的优缺点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、Redis 是什么?通常而言目前的数据库分类有几种,包括 SQL/N...
    99+
    2024-04-02
  • Java中有哪些潜在的内存泄露风险
    本篇文章给大家分享的是有关Java中有哪些潜在的内存泄露风险,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 内存泄露的定义如果GC无法回收内存中不再使用的对象,则定义为内存...
    99+
    2023-06-15
  • Redis的技术要点有哪些
    这篇文章主要介绍“Redis的技术要点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis的技术要点有哪些”文章能帮助大家解决问题。一、为什么使用Redi...
    99+
    2024-04-02
  • redis中的分布式锁有哪些特点
    本篇内容主要讲解“redis中的分布式锁有哪些特点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis中的分布式锁有哪些特点”吧! ...
    99+
    2023-04-14
    redis
  • 在JavaScript中var的缺点有哪些
    这篇文章主要介绍在JavaScript中var的缺点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! JavaScript中var存在的缺陷:1、va...
    99+
    2024-04-02
  • memcached和redis的有哪些优缺点?
                                 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作