• Redis 性能影响因素分析


    CPU

    原理剖析:

    1. Redis 的主工作线程为单线程,因此主机的 CPU 主频率对 Redis 性能影响非常大,所以有时候我们能看到下面奇怪的现象:CPU 核数多的主 机跑出的性能

    2. Redis 6.x 后,虽然能够开启多线程,但我们知道 Redis 的主工作线程仍然是单线程

    3. 同时我们可以尝试对 Redis 进行 CPU 绑定,降低 CPU 和内存之间的交互时间

    性能建议:

    1. 采用 CPU 频率高的主机

    2. 尝试对 Redis 进行 CPU 绑定

    磁盘

    性能建议:

    1. 如果是热点场景,建议大家关闭 rdb 和 aof

    2. 在 SATA 和 SAS 普通盘上,appendfsync=always 和 appendfsync=everysec 性能差异基本在 50 倍以上

    3. 在 aof 开启而且刷盘方式 appendfsync=always 时,磁盘对 Redis 的写入性能影响非常大,通常我们只在 SSD 时才尝试开启

    4. 如果主机 IO 非常繁忙,appendfsync=everysec 在极限情况下可能导致 Redis 主线程堵塞

    5. 尝试关闭重写时写 AOF 文件,no-appendfsync-on-rewrite yes,但安全性会变低

    网络

    性能建议:

    1. 在普通的网络中,每增加一层交换机/路由器,网络延迟时间约在 2ms 左右,所以 Redis 和应用程序之间不要跨多个交换机/路由器

    2. Redis 和应用程序在网局域网时性能较高,最好是同交换机下部署,性能最佳

    3. 网络上的防火墙以及转发机器,也会对网络造成较大影响,建议采用直通网络模式

    4. Redis 和应用程序之间的延迟时间如果超过了 2ms,建议从网络优化方面考虑

    SWAP

    操作系统为了缓解内存不足对应用程序的影响,允许把一部分内存中的数据换到磁盘上,以达到应用程序对内存使用的缓冲,这些内存数据被 换到磁盘上的区域,就是 Swap

    Redis 的主要操作对象为内存,强烈不建议大家使用 Swap;当内存中的数据被换到磁盘上后,Redis 再访问这些数据时,就需要从磁盘上读取, 访问磁盘的速度要比访问内存 50 倍以上,尤其在非 ssd 盘上,甚至在几百倍以上

    查看 Redis 是否使用了 Swap,其中 pid 为 Redis 进程号

    cat /proc/${pid}/smaps | egrep '^(Swap|Size)' 

    性能建议:

    1. 增加物理内存、关闭 Swap 内存,这是最简单也是最直接的方式

    2. 减小使用 Swap 内存阈值,比如如:

    vm.swappiness = 5

    vm.min_free_kbytes=204800

  • 相关阅读:
    Docker(10)compose容器编排
    Vue 表格动态添加行/删除行
    堆叠注入([强网杯 2019]随便注1)
    ctfshow-web入门-php特性(web109-web115)
    简单聊下STM32F103的串口
    C#创历史成为2023年度编程语言!!!
    清除el-form表单验证
    Android codec2 视频框架 之应用
    全球顶尖开源项目相聚外滩大会,绘制国际化开源生态新蓝图
    基于springboot+mybatis+sqlserver+jsp运行会报名管理系统
  • 原文地址:https://blog.csdn.net/qq_32378713/article/details/126830585