你們週末愉快啊,今天分享一則重要通知。git
Redis 6.0.8 於 2020/9/10 日晚緊急發佈!!!github
能夠看到這是一個緊急更新版本,使用了 Redis 6.0.7 Sentinel(哨兵)以及CONFIG REWRITE命令的用戶受到影響,請儘快升級,參考問題:#7760。redis
https://github.com/redis/redis/issues/7760安全
Redis 6.0.8 發佈郵件:運維
https://groups.google.com/g/redis-db/c/Wmf0RB25PmY/m/d7hVkerfBQAJide
如下是主要內容預覽:this
難道 Redis 出現了嚴重漏洞不成?LZ來解讀一下這封郵件內容!google
除了以上提到的受影響的內容以外,還有如下三方面的更新:spa
一、問題修復:線程
經過 Redis 的 CONFIG SET 命令設置 oom-score-adj-values 參數值,或者經過在配置文件中加載的時候,將生成一個損壞的配置文件致使 Redis 啓動失敗;(好吧!不是漏洞,是 Redis 的一個 bug 而已!)
修改 MacOS 系統下一個 redis-cli --pipe 使用問題;
修復了當不存在的鍵時,使用 HKEYS/HVALS 命令的響應問題;
其餘各類小錯誤的修復;
二、新特性/改變
移除設置 madvise 時的 THP 警告;
容許在集羣的只讀副本上執行讀取命令;
爲 redis-cli --cluster 命令增長 masters/replicas 選項;
三、模塊API
增長 RedisModule_ThreadSafeContextTryLock 模塊(線程安全的鎖);
重點來看一下這個致使重大問題的 oom-score-adj-values 參數的用處:
https://github.com/redis/redis/pull/1690/files
############################ KERNEL OOM CONTROL ##############################
# On Linux, it is possible to hint the kernel OOM killer on what processes
# should be killed first when out of memory.
#
# Enabling this feature makes Redis actively control the oom_score_adj value
# for all its processes, depending on their role. The default scores will
# attempt to have background child processes killed before all others, and
# replicas killed before masters.
oom-score-adj no
# When oom-score-adj is used, this directive controls the specific values used
# for master, replica and background child processes. Values range -1000 to
# 1000 (higher means more likely to be killed).
#
# Unprivileged processes (not root, and without CAP_SYS_RESOURCE capabilities)
# can freely increase their value, but not decrease it below its initial
# settings.
#
# Values are used relative to the initial value of oom_score_adj when the server
# starts. Because typically the initial value is 0, they will often match the
# absolute values.
oom-score-adj-values 0 200 800
這個 oom-score-adj 參數是用來 Linux 內核控制調優的,在 Linux 系統中,當內存溢出時,能夠提示內核 OOM killer 應該首先殺死哪些進程。
默認 oom-score-adj-values 不設置的狀況下會優先殺死後臺子進程,而後主從節點優先優先殺死從節點。
因此這 3 個值分別用來設置主、從、後臺子進程的分值的,分值範圍從 -1000 ~ 1000,分值越高越有可能被先殺死。
PS: 軟件嘛,總避免不了bug,因此,各位開發、運維的同窗,若是有用到這個的,請儘快升級保平安。