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