iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Software Development

Redis還在學系列 第 9

Day9 Redis組態檔設定-LAZY FREEING/THREADED IO/KERNEL OOM CONTROL/APPEND ONLY MODE

Redis.config

LAZY FREEING

  • lazyfree-lazy-eviction
  • lazyfree-lazy-expire
  • lazyfree-lazy-server-del
  • replica-lazy-flush

設定延遲釋放時機,

https://ithelp.ithome.com.tw/upload/images/20210924/20111658TYp356Q85V.png

# 預設
# 是否在移出時執行非同步刪除
lazyfree-lazy-eviction no

# 是否在key過期時執行非同步刪除
lazyfree-lazy-expire no

# 是否針對更新數值的命令時執行非同步刪除
lazyfree-lazy-server-del no

# 是否在同步Replica時執行非同步 flushDB
replica-lazy-flush no
  • lazyfree-lazy-user-del

是否針對用戶端更新數值的命令時執行非同步刪除.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658HFa24NuvCY.png

# 預設
lazyfree-lazy-user-del no
  • lazyfree-lazy-user-flush

是否在用戶端執行非同步 flushDB.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658UGMaXSRTsy.png

# 預設
lazyfree-lazy-user-flush no

THREADED I/O

  • io-threads
  • io-threads-do-reads

Redis 6.0 支援設定io與read所使用的threads,建議四核心的CPU以上才開啟此設定依照需求進行設定,超過八核心建議設定6 threads.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658RzMFBwxrnF.png

# 預設
# io-threads 4
# io-threads-do-reads no

KERNEL OOM CONTROL

  • oom-score-adj

是否開啟設定哪些Processes在out of memory時可以被刪除.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658RPUZ0OxtGF.png

# 預設
oom-score-adj no
  • oom-score-adj-values

設定可以被刪除的Processes範圍值,越高代表越容易被刪除.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658bBF5yEChxA.png

# 預設
oom-score-adj-values 0 200 800

KERNEL transparent hugepage CONTROL

  • disable-thp

是否關閉hugepage.
(避免CoW造成延遲問題)

https://ithelp.ithome.com.tw/upload/images/20210924/20111658H2eSj8CX31.png

# 預設
disable-thp yes

APPEND ONLY MODE

  • appendonly

異動日誌檔.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658pLxjGRf2QR.png

# 預設
# 關閉
appendonly no
  • appendfilename

異動日誌檔案名稱.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658pnZvycTsx8.png

# 預設
appendfilename "appendonly.aof"
  • appendfsync

寫入日誌檔模式.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658Tpmwj1zVrA.png

# 預設
# fsync 在每次寫入僅附加日誌後,速度慢,但最安全。
# appendfsync always

# 每秒fsync一次,速度與安全取得平衡。
appendfsync everysec

# 不要fsync,讓操作系統在需要的時候刷新數據,速度快.
# appendfsync no
  • no-appendfsync-on-rewrite

是否在背景aof文件rewrite期間使用fsync.

https://ithelp.ithome.com.tw/upload/images/20210924/20111658PH1HKOUMWq.png

# 預設
no-appendfsync-on-rewrite no
  • auto-aof-rewrite-percentage

設定aof檔案差異比例,當aof檔案比上次rewrite的差異比例大小。aof rewrite即在aof檔案在符合設定大小之後,重新將整個記憶體資料寫到aof檔案當中,以儲存最新的狀態(相當於bgsave).

  • auto-aof-rewrite-min-size

aof檔案rewrite最小的檔案大小,即最開始aof檔案必須要達到設定大小時才觸發,後面的每次rewrite就不會根據這個設定了(因為根據上一次rewrite完成之後的大小).Redis Server初始化啓動有效.如果是Redis Server恢復時,則lastSize等於初始aof檔案大小。

https://ithelp.ithome.com.tw/upload/images/20210924/201116586Ef8G9xaBF.png

# 預設
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
  • aof-load-truncated

Redis Server在恢復時,會忽略最後一條可能存在問題的指令。即在用戶端操作當下aof檔案寫入時,可能存在指令寫錯的問題(突然斷電,寫了一半),這種情況下,yes會log並繼續,而no會直接恢復失敗。

https://ithelp.ithome.com.tw/upload/images/20210924/20111658AnJ96t7CYy.png

# 預設
aof-load-truncated yes
  • aof-use-rdb-preamble

在開啓了這個混合模式功能之後,aof rewrite產生的檔案將同時包含rdb格式的內容和aof格式的內容,其中rdb格式的內容用於記錄已有的數據,而aof格式的內存則用於記錄最近發生了變化的數據,這樣Redis Server就可以同時兼有rdb持久化和aof持久化的優點(既能夠快速地生成重寫文件,也能夠在出現問題時,快速地載入數據)。

https://ithelp.ithome.com.tw/upload/images/20210924/20111658s2pMO92gMX.png

# 預設
aof-use-rdb-preamble yes

上一篇
Day8 Redis組態檔設定-KEYS TRACKING/SECURITY/CLIENT
下一篇
Day10 Redis組態檔設定-LUA SCRIPTING/REDIS CLUSTER/CLUSTER DOCKER/NAT support/SLOW LOG/LATENCY MONITOR
系列文
Redis還在學30

尚未有邦友留言

立即登入留言