Redis子进程开销与优化
文章系转载,便于分类和归纳,源文地址:https://blog.csdn.net/y532798113/article/details/106870299
1、CPU
-
开销
RDB和AOF文件生成,属于CPU密集型 -
优化
- 不做CPU绑定,也就是不把redis进程绑定在一个CPU上;
- 不和CPU密集型服务部署在一起;
2、内存
-
开销
fork内存开销,copy-on-write -
优化
-
linux内核优化,禁止使用:echo never > /sys/kernel/mm/transparent_hugepage/enable,
禁止原因:如果父进程有大量的内存页写入,就证明你的子进程内存开销比较大,因为它会写内存副本,造成很大的内存开销;
-
不允许单机做部署的时候,大量产生重写;
-
在Redis主进程写入量比较小的时候,执行save or bgsave时候就会消耗比较小的内存;
-
3、硬盘
-
开销
RDB和AOF文件写入,可以结合iostat,iotop分析 -
优化
- 不要和负载很高的硬盘部署在一起:存储服务(文件存储)、消息队列等;
- no-appendfsync-on-rewrite = yes,重写的过程不进行追加redis命令;
- 根据写入量决定磁盘类型:例如:SSD;
- 单机多实例持久化文件目录可以考虑分盘;