redis的aof与rdb(redis的aof怎么手动触发)

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

本文是关于AOF在Redis的潜在堵点。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

AOF有哪些潜在的阻塞点

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

1)、fork子进程

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

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

复制内存页表后,子进程和父进程指向同一个内存地址空间,也就是说,虽然此时生成了子进程,但并不适用与父进程相同的内存大小。

亲子过程什么时候才能真正脱离记忆?

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

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

分叉的子进程指向与父进程相同的内存地址空间。此时,子进程可以执行AOF重写,并将内存中的所有数据写入AOF文件。

但是,此时,父进程仍有流量要写。如果父进程正在操作一个现有的键,那么父进程实际上将复制对应于该键的内存数据,并申请新的内存空间。于是,渐渐地,父子进程的内存数据开始分离,父子进程逐渐有了自己独立的内存空间。因为内存分配是基于页面的,默认值是4k,如果此时父进程正在操作bigkey,则重新申请大块内存需要更长时间,这可能会导致阻塞风险。

此外,如果操作系统打开内存大页机制(Huge Page,页面大小2M),父进程申请内存时阻塞的概率将大大提高,因此需要在Redis机器上关闭巨型页面机制。每次Redis fork生成RDB或AOF重写完成时,您可以看到父进程在Redis日志中重新应用了多少内存空间。

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

AOF在不重用AOF本身的情况下重写日志:

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

第二,如果AOF的重写过程失败了,那么原来的AOF文件就相当于被污染了,无法恢复使用。因此,Redis AOF重写了一个新文件。如果重写失败,直接删除这个文件就可以了,不会影响原来的AOF文件。重写完成后,直接替换旧文件即可。

感谢阅读!这篇关于“AOF在Redis有哪些潜在的阻碍点”的文章就分享到这里。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157070.html

(0)

相关推荐

  • C#windowsform 连接数据库

    技术C#windowsform 连接数据库 C#windowsform 连接数据库using System;
    using System.Collections.Generic;
    using System

    礼包 2021年11月14日
  • 手打虾滑,现在比较有特色的火锅有哪些

    技术手打虾滑,现在比较有特色的火锅有哪些如今的火锅店是越来越多,品种也越来越多了,想吃火锅了,再也不单单是在铜锅涮肉和川味火锅中选择了,日本的寿喜锅,韩国的部队火锅,潮汕牛肉火锅,港式小火锅,梭边鱼火锅,贵州的酸汤鱼火锅

    生活 2021年10月30日
  • 面向对象设计原则之合成复用原则

    技术面向对象设计原则之合成复用原则 面向对象设计原则之合成复用原则转载来自:https://blog.csdn.net/lovelion/article/details/7563441
    合成复用原则又称

    礼包 2021年11月5日
  • C++怎么将帮助函数和它们支持的类放在同一命名空间

    技术C++怎么将帮助函数和它们支持的类放在同一命名空间这篇文章主要讲解了“C++怎么将帮助函数和它们支持的类放在同一命名空间”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“

    攻略 2021年11月25日
  • python第三方模块

    技术python第三方模块 python第三方模块第三方模块
    第三方模块:并不是python自带的 需要基于网络下载下来'''pip所在的路径添加环境变量'''
    下载第三方模块的方式方式1:命令行借助

    礼包 2021年11月30日
  • CSS中上下margin的传递和折叠

    技术CSS中上下margin的传递和折叠 CSS中上下margin的传递和折叠CSS中上下margin的传递和折叠
    1.上下margin传递
    1.1.margin-top传递为什么会产生上边距传递
    块级

    礼包 2021年12月23日