深入理解Redis--子進程開銷與優化

1、CPU
(1)開銷
        RDB和AOF文件生成,屬於CPU密集型

(2)優化
    (1)不做CPU綁定,也就是不把redis進程綁定在一個CPU上; 

    (2)不和CPU密集型服務部署在一起;

 

2、內存
(1)開銷
        fork內存開銷,copy-on-write

(2)優化
    (1)linux內核優化,禁止使用:echo never > /sys/kernel/mm/transparent_hugepage/enable,

      禁止原因:如果父進程有大量的內存頁寫入,就證明你的子進程內存開銷比較大,因爲它會寫內存副本,造成很大的內存開銷;

    (2)不允許單機做部署的時候,大量產生重寫;

    (3)在Redis主進程寫入量比較小的時候,執行save or bgsave時候就會消耗比較小的內存;

 

3、硬盤
(1)開銷
        RDB和AOF文件寫入,可以結合iostat,iotop分析

(2)優化
    (1)不要和負載很高的硬盤部署在一起:存儲服務(文件存儲)、消息隊列等;

    (2)no-appendfsync-on-rewrite = yes,重寫的過程不進行追加redis命令;

    (3)根據寫入量決定磁盤類型:例如:SSD;

    (4)單機多實例持久化文件目錄可以考慮分盤;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章