这里写自定义目录标题
- 一、CPU对Redis的影响
- 二、磁盘对Redis的影响
- 三、网络对Redis的影响
- 四、Swap对Redis的影响
一、CPU对Redis的影响
二、磁盘对Redis的影响
性能建议:
- 如果是热点场景,建议大家关闭rdb和aof。
- 在SATA和SAS普通盘上,appendfsync=always和appendfsync=everysec性能差异基本在50倍以上。
- 在aof开启而且刷盘方式appendfsync=always时,磁盘对Redis的写入性能影响非常大,通常我们只在SSD时才尝试开启。
- 如果主机IO非常繁忙,appendfsync=everysec在极限情况下可能导致Redis主线程阻塞。
- 尝试关闭重写时写AOF文件,no-appendfsync-on-rewrite yes,但安全性变低。
三、网络对Redis的影响
应用程序和Redis主机之间的网络延时对性能影响非常大:
性能建议:
- 在普通的网络中,每增加一层交换机或路由器,网络延迟时间约在2ms左右,所以Redis和应用程序之间不要跨多个交换机和路由器。
- Redis和应用程序在局域网时性能较高,最好是同交换机下部署,性能最佳。
- 网络上的防火墙以及转发机器,也会对网络造成较大影响,建议采用直通网络模式。
- Redis和应用程序之间的延迟时间如果超过了2ms,建议从网络优化方面考虑。
四、Swap对Redis的影响
操作系统为了缓解内存不足对应用程序的影响,允许把一部分内存中的数据换到磁盘上,以达到应用程序对内存使用的缓冲,这些内存数据被换到磁盘上的区域,就是Swap。
Redis的主要操作对象为内存,当内存中的数据被换到磁盘上后,Redis再访问这些数据时,就需要从磁盘上读取,访问磁盘的速度要比访问内存慢50倍以上,尤其在非SSD硬盘上,甚至几百倍以上。
查看Redis是否使用了Swap,其中pid为Redis进程号:
cat /proc/${pid}/smaps|egrep ‘^(Swap|Size)’
性能建议:
- 增加物理内存、关闭Swap内存。
- 减小使用Swap内存阈值,比如:
vm.swappiness = 5
vm.min_free_kbytes=204800
查看swap是否关闭: