6. 开发运维常见问题

#开发运维常见问题

fork操作

  • 同步操作

  • 与内存量息息相关:内存越大,耗时越长(与机器类型有关)

  • info:latest_fork_usec

  • 改善fork

    • 有限使用物理机或高校支持fork操作的虚拟化技术

    • 控制Redis实例最大可用内存:maxmemory

    • 合理配置linux内存分配策略:vm.overcommit_memory=1

    • 降低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-no-rewrite=yes

      • 根据写入量决定磁盘类型:如SSD

      • 单机多实例持久化文件目录可以考虑分盘

AOF追加阻塞

  • 主线程 每秒刷盘

    • AOF缓冲区

      • 同步线程

        • 同步硬盘

      • 对比上次fsync时间

        • 大于2秒

          • 阻塞

        • 小于2秒

          • 通过

    • 定位错误

      • redis日志

      • aof_delayed_fsync:100

posted @ 2020-01-14 11:52  Richie`  阅读(158)  评论(0编辑  收藏  举报