1、fork操作
(1)同步操作
雖然fork同步操作是非常快的,但是如果需要同步的數據量過大(比如超過20G),fork就會阻塞redis主進程。
(2)與內存量息息相關
內存越大,fork同步數據耗時越長,當然也跟服務器有關,服務器有物理機,也有虛擬機。
(3)info:latest_fork_usec
使用此命令可以查看持久化花費的時間,如果持久化時間過長,就會造成卡頓。
例如:如果redis此時QPS上萬,此時redis正在持久化,而且持久化時間比較長(1s或者10幾秒),此時就會嚴重阻塞redis。
2、改善fork
(1)優先使用物理機或者高效的虛擬機支持fork操作
(2)控制redis實際最大可用內存:maxmemory
(3)合理配置linux內存分配策略:vm.overcommit_memory=1
(4)降低fork頻率:例如放寬AOF重寫自動觸發時機,減少不必要的全量複製。