个人博客网:https://wushaopei.github.io/    (你想要这里多有)

一、常见问题目录

  1. fork操作
  2. 进程外开销
  3. AOF追加阻塞
  4. 单机多实例部署

二、 fork

1、Fork操作

1.同步操作:Fork操作只是做内存页的拷贝,而不是做整个内存的拷贝,所以说,大部分情况下速度是非常快的,但是如果本身的fork操作比较慢,或者是卡在了某个地方,那么它就会阻塞redis的主线程。

2. 与内存量息息相关:内存越大,耗时越长(与机器类型有关)

3. Info:latest_fork_usec

该参数用来查上一次持久化的执行时间,用来辅助对持久化文件内存相关信息进行监控

2、改善fork

  1. 优先使用物理机或者高效支持fork操作的虚拟化技术
  2. 控制Redis实例最大可用内存:maxmemory
  3. 合理配置Linux内存分配策略:vm.overcommit_memory=1
  4. 降低fork频率:例如放宽AOF重写自动触发时机,不必要的全量复制

三、子进程开销和优化

1、CPU:

开销: RDB和AOF文件生成,属于CPU密集型

开销主要体现在对文件的重写,也就是对硬盘的写操作;同时,它本身也是一个CPU密集型的操作;子进程的开销一般可达到90%以上。

优化:不做CPU绑定,不和CPU密集型部署

这样可以保证不会产生CPU密集型的竞争。

2、内存:

开销: fork 内存开销,copy-on-write.

fork内存开销,基本上大部分集中于客户端有写入操作创建子线程进行刷数据到硬盘的时候。

优化:echo never > /sys/kernel/mm/transparent_hugepage/enabled

优化:不允许单机作部署时发生大量的重写,这样内存的消耗比较小

3、硬盘

开销: AOF和RDB 文件写入,可以结合iostat,iotop分析

硬盘优化:

1) 不要和高硬盘负载服务部署一起 : 存储服务、消息队列等

2) no-appendfsync-on-rewrite = yes

3) 根据写入量决定磁盘类型:例如ssd

4)单机多实例持久化文件目录可以考虑分盘

四、AOF阻塞

1、AOF追加阻塞

如果我们使用AOF进行持久化,那么,一般会使用呢每秒刷盘的策略。

分析:

主线程将数据加载到缓冲区,同时它还有一个AOF同步线程,去负责每秒同步刷盘操作,

主线程还会负责一项工作,主线程会对比上次AOF同步的时间,如果上次同步时间在两秒之内,主线程就会返回;如果距离上次同步时间超过了两秒,主线程会阻塞,直到同步完成。

实际上,这也是为了达到保证AOF同步安全的一种策略,所以为了达到这一目的,它会一直阻塞直到达到同步完成。

但是,这里会产生两个问题:

1)主线程是不能阻塞的

因为主线程要负责日常命令的处理,是非常宝贵的资源,

2)每秒刷盘的策略可能不只会丢失一秒,而是可能会丢失两秒的数据

2、AOF阻塞定位

1)定位方法1:

查看redis日志:

 

在redis日志中,有这么一段,它会告诉你,你的异步AOF同步可能花了太长时间了,你的磁盘是不是有问题,而且这个过程有可能拖慢你的redis。

2)定位方法2:

通过命令查看:

 info Persistence

Redis 入门到分布式 (六)常见的持久化开发运维问题的更多相关文章

  1. Redis入门到高可用(十七)—— 持久化开发运维常见问题

    1.fork操作 2.子进程开销和优化 3.AOF阻塞

  2. Redis 入门到分布式 (八)Redis Sentinel

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) sentinel-目录 主从复制高可用 安装配置 实现原理 架构说明 客户端连接 常见开发运维问题 一. ...

  3. Redis 入门到分布式 (七)Redis复制的原理与优化

    一.目录 Redis复制的原理与优化 什么是主从复制 全量复制和部分复制 复制的配置 故障处理 开发运维常见问题 二. 什么是主从复制 1.单机有什么问题? 单机如果机器故障,那么久无法及时提供服务: ...

  4. redis 学习(20)-- 常见的持久化开发与运维问题

    常见的持久化开发与运维问题 fork 操作 fork 操作是一个同步操作,若执行较慢会阻塞 redis 主线程 执行时间与内存量相关:内存越大,耗时越长:虚拟机较慢,真机较快 查看 fork 执行时间 ...

  5. Redis详解(六)------ RDB 持久化

     前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,has ...

  6. redis入门指南(六)—— 集群

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 配置集群 1.配置集群,集群解决了单点故障以及单台机器内存上限的问题,使用集群时,只需要将配置文 ...

  7. Redis 入门到分布式 (五) Redis持久化的取舍和选择

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) Redis持久化的取舍和选择 持久化的作用 RDB AOF RDB和AOF的选择 一.持久化的作用   ...

  8. 一站式学习Redis 从入门到高可用分布式实践(慕课)第六章 Redis开发运维常见问题

    fork操作 1.同步操作 2.与内存量息息相关:内存越大,耗时越长(与机器类型有关) 3.info:latest_fork_usec 进程外开销 AOF追加阻塞 不知道哪个命令??? 单机多实例部署 ...

  9. Redis 入门到分布式 (四) 瑞士军刀Redis其他功能

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录: 慢查询 Pipeline 发布订阅 Bitmap(位图) HyperLogLog GEO 一.慢 ...

随机推荐

  1. Android showStatusIcon on inactive InputConnection异常

    在开发的时候突然发现在输入文本框中点击输入法的删除按钮,发现app莫名其妙退出 了.log信息如下: 01-31 16:57:59.524: W/IInputConnectionWrapper(125 ...

  2. 【SMB源码解析系列】——002.RESET中断

    跟随代码结尾处的中断向量,我们可以看到RESET中断所在地址为Start标签处. 这部分代码比较简单,从字面便可基本理解. 1.(682~683)状态寄存器设置,sei指令用于禁用IRQ中断,SMB中 ...

  3. 00006-java 下载一个excel模板(文件),前端layui按钮

    下载按钮: <button class="layui-btn layui-btn-sm" data-type="downTemplate">模板下载 ...

  4. Aangular 父子间组件传递

    1.父子间组件传递------重点&难点 Vue.js和Angular中的父子间消息传递原理一样,都可以用口诀: “Props Down,Events Up” 方向1:父 =>子 父组件 ...

  5. servlet--http接口简单的创建及调用

    很久没有用servlet的交互技术,生疏的遭不住.现在简单的说说servlet中http接口的创建及调用,便于大家理解,使用. 先说说服务端,就是提供服务方的代码: pom.xml <depen ...

  6. scroll 方法 获取滚轴距离顶部高度

    $(window).scroll(function(){ var supportPageOffset = window.pageXOffset !== undefined; // 判断是否支持page ...

  7. mac OS和win7笔记本实现文件共享

    记录下macbook通过共享读取win7笔记本中文件的过程,条件是两台电脑处于同一无线网中 win7操作 点击网络图标--属性--更改高级共享设置 选择公用后选择以下选项:启动网络发现--启动文件和打 ...

  8. js中时间戳和时间格式之间的转换

    //时间格式转化 getNowDate(timestamp) { var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000 va ...

  9. Istio 1.6架构及性能

    Istio 架构 Istio 服务网格从逻辑上分为数据平面和控制平面. 数据平面 由一组智能代理(Envoy)组成,被部署为 sidecar.这些代理负责协调和控制微服务之间的所有网络通信.他们还收集 ...

  10. 【图像处理】利用C++编写函数,绘制灰度图像直方图

    1. 简介 利用OpenCV读取图像,转换为灰度图像,绘制该灰度图像直方图.点击直方图,控制台输出该灰度级像素个数. 2. 原理 (1) 实现原理较为简单,主要利用了OpenCV读取图像,并转换为灰度 ...