redis-开发运维常见问题

fork 操作

  • 同步操作
  • 与内存量息息相关:内存越大,耗时越长
  • info:latest_fork_usec 上一次fork操作的耗时微妙数

改善fork

  1. 优先使用物理机或者高效支持fork操作的虚拟机化技术
  2. 控制redis实例最大可用内存
  3. 合理配置系统内存分配策略
  4. 降低fork频率

子进程外开销

  • CPU 开销:RDB和AOF文件生成,属于CPU密集型任务
  • 优化: 不做CPU绑定,不和CPU密集型服务部署在一起
  • 内存开销: fork内存开销,copy-on-write.
  • 优化:echo never > /sys/kernel/mm/transparent_hugepage/enabled
  • 硬盘开销: AOF和RDB文件写入,可以结合
  • 优化:不和硬盘高负载服务部署在一起:存储服务,消息队列等
  • no-appendfsync-on-rewrite=yes
  • 根据写入量决定磁盘类型:ssd

AOF追加阻塞

  • redis 日志: disk is busy?
  • info Persistence

读写分离

  • 读写分离:读流量分摊到从节点
  • 可能遇到的问题: 1. 复制数据延迟 2. 读到过期数据 3. 从节点故障

配置不一致

  1. maxmemory不一致: 丢失数据
  2. 数据结构优化参数

规避全量复制

  • 第一次全量复制:第一次不可避免, 小主节点,低峰时间处理
  • 节点运行id不匹配: 主节点发生重启(运行id变化) 故障转移: 例如哨兵模式
  • 复制积压缓冲区不足: 网络中断,部分复制无法满足 ,增大复制缓冲区配置rel_back_size , 网络"增强"

规避复制风暴

  • 单节点复制风暴:
  1. 问题: 主节点重启, 多节点复制 解决: 更换复制拓扑
  • 单机器复制风暴: 重启机器,所有节点都发生全量复制
  1. 主节点分散多机器

你可能感兴趣的:(redis)