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)单机多实例持久化文件目录可以考虑分盘;