1:fork 操作
2:进程外开销
3:AOF追加阻塞
4:单机多实例部署
fork操作
1:同步操作
2:与内存量息息相关 :内存越大,耗时越长 与机器类型有关
3:info:latest_fork_usec 查询持久化的时间
改善fork
1:优先使用物理机或者搞笑支持fork操作的虚拟化技术
2:控制redis实例最大可用内存 maxmemory
3:合理配置linux内存分配策略 vm.overcommit_memory=1
4:降低fork频率:列入放宽AOF重写自动触发实际,不必要的全量复制
子进程开销和优化
1:CPU
- 开销:RDB和AOF文件生成,属于CPU密集型
- 优化:不做CPU绑定,不和CPU密集型部署
2:内存
开销:fork内存开销 copy-on-write
优化:echo never >/sys/kernel/mm/transparent_hugepage/enabled
3:硬盘
开销:AOF和RDB文件写入,可以结合iostat iptop分析
硬盘优化
1:不要和高硬盘负载服务部署在一起:存储服务 队列服务
2:no-appendfysnc-on-rewrite = yes
3:根据写入量决定磁盘类型 例如ssd
4:单机多实例持久化文件目录可以考虑分盘
AOF 追加阻塞
1:主线程到缓冲区
2:同步线程
3:比上次fysnc时间对比
4:如果时间大于两秒 阻塞
5:小于两秒 通过
AOF阻塞定位
Redis 日志:
info persistence:info persistence
aof_delayed_fsync
通过硬盘资源 查询