Redis 开发运维常见问题

Redis 开发运维常见问题

  • fork操作
  • 进程外开销
  • AOF追加阻塞
  • 单机多实例部署

fork操作

  1. 首先fork操作是个同步操作,例如执行bgsave/aof 重写时,主线程执行fork同步 响应OK 生成子线程
  2. 与内存量息息相关:内存越大,耗时越大
  3. info: latest_fork_usec 查看上次执行fork 消耗的微妙数

改善fork

  1. 使用性能较高的物理机
  2. 控制Redis实例最大可用内存:maxmemory
  3. 合理配置Linux内存分配策略:vm.overcommit_memort=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,iotop分析 

       优化: 不要和高负载服务部署在一起,存储服务,消息队列等

                   no-appendfsync-on-rewrite = yes

                   根据写入量决定磁盘类型:例如ssd

 

AOF追加阻塞

展开阅读全文

没有更多推荐了,返回首页