Redis 性能影响因素分析

CPU

原理剖析:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ym影子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值