第六章-开发运维的常见问题

2019-04-20  本文已影响0人  asfafjwefhfuer

目录

  1. fork操作
  2. 进程外开销
  3. AOF追加阻塞
  4. 单机多实例部署

一. fork操作

当执行一个bgsave或bgrewriteaof首先会执行一个fork操作,它只是一做一个内存页的拷贝,并不是拷贝的内存,所以它的速度是非常快的。当fork操作比较慢或卡在某一个点,这时它会阻塞redis主线程

  1. 同步操作
  2. 与内存量息息相关: 内存越大,耗时越长(与机器类型有关)
  3. info:latest_fork_usec: 查看上一次fork操作耗时的微秒数

改善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追加阻塞

image.png image.png image.png 硬盘信息查看

四. 单机多实例部署

上一篇 下一篇

猜你喜欢

热点阅读