因為Redis Server是在記憶體進行所有的操作,故需要優先在作業系統中配置記憶體使用相關的設定來配合,藉此防止當記憶體不足out of memory時服務不會直接被作業系統處理掉.
vi /etc/sysctl.conf
# 0 返回錯誤給應用程式(預設)
# 1 可以讓應用程式繼續取用至耗盡所有記憶體
# 2 限制應用程式最大可以用50% memory + swap
vm.overcommit_memory=1
# 可連線數
net.core.somaxconn= 32767
Redis Server可以開啟的檔案數量,可以參考以下官方的建議進行設定.
vi /etc/security/limits.conf
#Redis
redis soft nproc 65535
redis hard nproc 65535
redis soft nofile 65535
redis hard nofile 65535
#check max memory size = unlimited
ulimit -a
vi /etc/selinux/config
#關閉SELINUX
SELINUX=disabled
#關閉Hugepages
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
因Swap為透過硬碟進行操做,效率會比記憶體來得慢,需要特別注意配置使用.
# 預設
echo 60 > /proc/sys/wm/swappiness
# 當記憶體不足時,禁止使用Swap空間,此時Redis Server就會出現out of memory的錯誤,服務會被作業系統關閉
echo 0 > /proc/sys/wm/swappiness
# 當可用記憶體很小且有可能發生out of memory時,才會使用Swap Out
echo 1 > /proc/sys/wm/swappiness
# 提高使用Swap In 與Swap Out的頻率,此應用通常為系統配置較大的記憶體容量
echo 10 > /proc/sys/wm/swappiness
# 頻繁使用Swap In 與Swap Out
echo 100 > /proc/sys/wm/swappiness