redis持久化开发运维常见问题

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
通过硬盘资源 查询

猜你喜欢

转载自blog.csdn.net/PYouLing123456789/article/details/83960221