1.fork操作
- 用於同步操作,
- 雖然fork同步操作非常快,同步大數據量時,fork就會阻塞主進程
- 與內存量息息相關,使用的內存越大,耗時越長
- info:latest_fork_usec
- 查看持久化花費的時間,如果持久時間過長,就會造成卡頓 ,假如QPS上萬,此時redis正在持久化,持久化時間長,就會造成卡頓
2 改善fork
- 優先使用物理機或者或者高效的虛擬機支持fork操作
- 控制redis實際最大可用操作
- 合理配置linux內存分配策略
- 降低fork頻率:例如放寬AOF重寫自動觸發機制,減少不必要的全量復制
3.子進程開銷和優化
- cpu
- 開銷:RDB和AOF文件生成屬於CPU密集型
- 優化:不做CPU把綁定,不和CPU密集型的應用部署
- 內存
- 開銷:fork內存開銷, copy-on-write
- 優化:echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 硬盤:AOF和RDB文件寫入,可以結合iostat,iotop分析
4.硬盤優化
- 不要和高硬盤負載服務部署一起:存儲服務,消息隊列
- no-appendfsync-on-write=yes
- 根據寫入量決定磁盤類型:SSD
- 單機多實例持久化文件目錄可以考慮分盤