原因分析:即進程能打開的最大文件描述符太小了。系統默認設置的值壹般是 1024 。
解決方法:
1.系統級別,即?linux 內核能分配的最大文件描述符數量(參考:mit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
原因分析:vm.overcommit_memory?指的是進程申請的內存大小。當參數值為 0?時,如果壹次性申請的內存大小超過了系統總內存,有可能被拒絕。當參數值為 0?時,有可能會導致?redis?執行 bgsave?操作保存 rdb?文件失敗。(參考:/?p=102)。
解決方法:
# vi /etc/sysctl.conf
vm.overcommit_memory = 1
# sysctl -p
查看方法:
# cat /proc/sys/vm/overcommit_memory
# sysctl vm.overcommit_memory
第四個問題:
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
原因分析:Transparent Huge Pages (THP)?開啟後會使 redis?時延變大和造成內存使用問題(參考:https://redis.io/topics/latency)。
解決方法(CentOS 6.X):
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
解決方法(CentOS 7.X):
# vim?/etc/systemd/system/disable-transparent-huge-pages.service
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
[Install]
WantedBy=basic.target
# systemctl enable disable-transparent-huge-pages
# systemctl start disable-transparent-huge-pages
查看方法:
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]