目录
- fork操作
- 进程外开销
- AOF追加阻塞
- 单机多实例部署
一. fork操作
当执行一个bgsave或bgrewriteaof首先会执行一个fork操作,它只是一做一个内存页的拷贝,并不是拷贝的内存,所以它的速度是非常快的。当fork操作比较慢或卡在某一个点,这时它会阻塞redis主线程
- 同步操作
- 与内存量息息相关: 内存越大,耗时越长(与机器类型有关)
-
info:latest_fork_usec
: 查看上一次fork操作耗时的微秒数
改善fork
- 优先使用物理机或者高效支持fork操作的虚拟化技术
- 控制Redis实例最大可用内存:
maxmemory
- 合理配置Linux内存分配策略;
vm.overcommit_memory=1
- 降低fork频率:例如放宽AOF重写自动触发时机,不必要的全量复制
二. 进程外开销
子进程开销和优化
-
CPU
- 开销 : RDB和AOF文件生成。属于CPU密集型
- 优化 :不做CPU绑定,不和CPU密集型部署
-
内存
- 开销 : fork内存开销 , copy-on-write.
- 优化 :echo never > /sys/kernel/mm/transparent_hugepage/enabled
-
硬盘
- 开销 :AOF和RDB文件的写入。可以结合iostat, iotop分析
- 优化 :
1. 不要和高硬盘负载服务部署在一起: 存储服务、消息队列等。
2.no-appendfsync-on-rewrite =yes
3. 根据写入量决定磁盘类型 : ssd
4. 单机多实例持久化文件目录可以考虑分盘
三. AOF追加阻塞




网友评论