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)

相关推荐

  • 数组扁平化js(js实现数组扁平化输出)

    技术js怎样实现数组的扁平化js怎样实现数组的扁平化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数组扁平化的方式什么是数组扁平化?数组扁平化:指将一个

    攻略 2021年12月13日
  • Vue 全家桶介绍-超详细教程

    技术Vue 全家桶介绍-超详细教程 Vue 全家桶介绍-超详细教程Vue 全家桶介绍-超详细教程Vue 全家桶介绍Vue有著名的全家桶系列,包含了vue-router(http://router.vue

    礼包 2021年10月27日
  • 如何理解对Java的异常

    技术如何理解对Java的异常这篇文章主要介绍“如何理解对Java的异常”,在日常操作中,相信很多人在如何理解对Java的异常问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解对Java

    攻略 2021年10月23日
  • java用swing做计算器(javaswing科学计算器)

    技术Java Swing如何编写一个简单的计算器软件这篇文章主要介绍了Java Swing如何编写一个简单的计算器软件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起

    攻略 2021年12月20日
  • 在Mac下怎么快速重置mysql root密码

    技术在Mac下怎么快速重置mysql root密码这篇文章将为大家详细讲解有关在Mac下怎么快速重置mysql root密码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    攻略 2021年10月29日
  • Oracle_勒索病毒的解决方案是怎么样的

    技术Oracle_勒索病毒的解决方案是怎么样的这期内容当中小编将会给大家带来有关Oracle_勒索病毒的解决方案是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Oracle_勒

    攻略 2021年12月8日