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)

相关推荐

  • MySQL Index Condition Pushdown(ICP)的使用限制有哪些

    技术MySQL Index Condition Pushdown(ICP)的使用限制有哪些小编给大家分享一下MySQL Index Condition Pushdown(ICP)的使用限制有哪些,希望大家阅读完这篇文章之

    攻略 2021年11月3日
  • openwrt状态监控(openwrt实现远程管理)

    技术OpenWRT如何实现远程监听小编给大家分享一下OpenWRT如何实现远程监听,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、安装命令o

    攻略 2021年12月18日
  • iOS如何使用Photo应用

    技术iOS如何使用Photo应用这篇文章将为大家详细讲解有关iOS如何使用Photo应用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、步骤执行:1、首先要创建一个SingleVie

    攻略 2021年10月21日
  • C语言怎么实现单链表的基本功能

    技术C语言怎么实现单链表的基本功能本篇内容主要讲解“C语言怎么实现单链表的基本功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么实现单链表的基本功能”吧!1.首先简

    攻略 2021年11月24日
  • Linux下Hadoop 2.7.3如何安装搭建

    技术Linux下Hadoop 2.7.3如何安装搭建这篇文章将为大家详细讲解有关Linux下Hadoop 2.7.3如何安装搭建,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux

    攻略 2021年11月30日
  • sparksql查询的数据保存(sparksql命令行怎么保存数据)

    技术Spark SQL数据加载和保存的实例分析今天就跟大家聊聊有关Spark SQL数据加载和保存的实例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、前置

    攻略 2021年12月17日