zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    multiprocessing总结
    CPython在CPU密集型应用下的并发
    多线程交互
    线程等待与守护线程
    Python多线程(1)
    一个简单的单线程异步服务器
    多线程与多进程的实现
    socket的功能分割到不同函数
    数据处理项目Postmortem
    M2 终审
  • 原文地址:https://www.cnblogs.com/richiewlq/p/12191268.html
Copyright © 2011-2022 走看看