1、fork操作
a、优先使用物理机或者高效支持fork操作的虚拟化技术
b、控制Redis实例最大可用内存
c、合理配置Linux内存分配策略:vm.overcommit_memory=1
d、降低fork频率:例如放宽AOF重写自动触发时机,不必要的全量复制
2、子进程开销和优化
a、cpu:RDB和AOF文件的生成属于CPU密集型,优化时可以不做CPU绑定,不和CPU密集型部署
b、内存:fork会有内存开销,copy-on-write,优化时可以设置Linux配置项:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
c、硬盘:AOF和RDB文件的写入会对硬盘产生开销,所以不要和高硬盘负载的服务部署在一起,如存储服务、消息队列等;no-appendfsync-on-rewrite=yes;根据写入量决定磁盘类型:如ssd;单机多实例持久化文件目录可以考虑分盘
3、AOF追加阻塞
a、fsync大于2s时候,会阻塞redis主进程,我们都知道redis主进程是用来执行redis命令的,是不能阻塞的。
b、虽然每秒everysec刷盘策略,但是实际上不是丢失1s数据,实际有可能丢失2s数据。
网友评论