深入理解Redis--子进程开销与优化

1、CPU
(1)开销
        RDB和AOF文件生成,属于CPU密集型

(2)优化
    (1)不做CPU绑定,也就是不把redis进程绑定在一个CPU上; 

    (2)不和CPU密集型服务部署在一起;

 

2、内存
(1)开销
        fork内存开销,copy-on-write

(2)优化
    (1)linux内核优化,禁止使用:echo never > /sys/kernel/mm/transparent_hugepage/enable,

      禁止原因:如果父进程有大量的内存页写入,就证明你的子进程内存开销比较大,因为它会写内存副本,造成很大的内存开销;

    (2)不允许单机做部署的时候,大量产生重写;

    (3)在Redis主进程写入量比较小的时候,执行save or bgsave时候就会消耗比较小的内存;

 

3、硬盘
(1)开销
        RDB和AOF文件写入,可以结合iostat,iotop分析

(2)优化
    (1)不要和负载很高的硬盘部署在一起:存储服务(文件存储)、消息队列等;

    (2)no-appendfsync-on-rewrite = yes,重写的过程不进行追加redis命令;

    (3)根据写入量决定磁盘类型:例如:SSD;

    (4)单机多实例持久化文件目录可以考虑分盘;
 

你可能感兴趣的:(分布式)