美文网首页
Redis单点性能的瓶颈分析

Redis单点性能的瓶颈分析

作者: pippo1980 | 来源:发表于2018-12-06 15:58 被阅读0次

以下文章基于Redis3.0以上版本源码进行分析解读


我们在上一篇文章Redis之EventLoop分析中知道:

  • Reids Server中所有的操作都是通过Event Loop单线程串行调度的
  • Event Loop中每个loop中除了处理当前io event外, 还会处理内存回收、RDB刷出及复制等逻辑

由此可知,影响Redis单点性能的操作主要会有以下几个方面:

  • Blocking Command的处理(blpop、pubsub...)
  • 内存数据的频繁刷出(RDB/AOF)

先来分析一下为什么Blocking Command会对性能有很大影响

遍历所有的key和blocked client

redis中block command侦听数据结构&处理逻辑
  • redis server会有一个全局链表 readkeys, 保存了所有被blpop block的key
  • 链表中的每个节点保存了一个当前key上所有blocked client
  • redis 在每次处理command完成后, 都会通过一个双层循环
  1. 由于每次请求的处理都需要完成block client的侦听逻辑, 当有大量block client的时候, 就会导致每次请求的处理时延都会增加
  2. 当然大量block client对于server端的链接维护也是个负担

RDB/AOF频繁刷出对于性能的影响分析

重温一下event loop的处理机制
  • time event会在event loop中被串行执行.
  • time event中会有比较多的高成本操作, 如db rehash、统计、RDB(AOF)数据刷出
  • 其中最大的性能瓶颈就是数据的刷出, 因为Redis默认是fork一个子进程, 将当前内存中的数据按照一定格式写入到本地文件中,

如果当一个redis存在大量的写入请求, 并且rdb的flush策略没有很好配置的时候, 可能每秒都会触发数据的刷出, Disk IO的高负载会导致整体处理时延的提升, 最终租塞Event Loop的线程

相关文章

  • Redis单点性能的瓶颈分析

    以下文章基于Redis3.0以上版本源码进行分析解读 我们在上一篇文章Redis之EventLoop分析中知道: ...

  • linux 下查看性能状态命令

    解决问题: 性能优化,首先分析是由于哪些瓶颈造成的性能低下, 如 cpu 瓶颈,内存瓶颈,io瓶颈, 或者程序本身...

  • 性能瓶颈分析案例

    性能分析案例一 在性能测试过程中,瓶颈犹如功能测试的bug,瓶颈的分析犹如bug的定位。性能测试工程师好比医生,...

  • 10分钟后性能测试瓶颈调优!想进大厂这个必须会

    目录 引言:性能瓶颈调优 性能调优步骤 性能瓶颈概率分布 系统资源 CPU top 参数详解 性能分析思路 案例分...

  • 分析并优化你的python代码

    Profiling and optimizing your Python code 性能分析 只要找到性能瓶颈,采...

  • optimize

    linux性能分析及调优__cpu 性能瓶颈调优可调性能参数 、内存性能瓶颈可调性能参数(操作系统设置swap的目...

  • Redis批量操作详解及性能分析

    在之前的文章中,我们对redis批量处理指令mget进行了压测并分析了性能瓶颈,显然通过mget批量执行指令可以节...

  • 2016ArchSummit-https 性能优化

    该分享主要两部分:1.分析https的性能瓶颈点 2.根据瓶颈点的优化方案 性能分析 https比起http的缺点...

  • Redis 主从复制

    定义 单个Redis数据库很容易出现单点故障和容量瓶颈问题,Redis支持将主数据库(Master)上的数据复制多...

  • 【分布式】应用从单机到分布式的演进过程

    前言 单机的性能会遇到瓶颈,这仅仅是从性能来看。即使不从性能来看,如果一个机器的性能足够,那么也会存在单点故障的问...

网友评论

      本文标题:Redis单点性能的瓶颈分析

      本文链接:https://www.haomeiwen.com/subject/wlwvcqtx.html