第一個問題: Increased maximum number of open files to 10032 (it was originally set to 1024).?
原因分析:即進(jìn)程能打開的最大文件描述符太小了。系統(tǒng)默認(rèn)設(shè)置的值一般是 1024 。
解決方法:
1.系統(tǒng)級別,即?linux 內(nèi)核能分配的最大文件描述符數(shù)量(參考:https://www.kernel.org/doc/Documentation/sysctl/fs.txt)。
# vi /etc/sysctl.conf
fs.file-max = 102400
# sysctl -p
查看方法:
# cat /proc/sys/fs/file-max
# sysctl fs.file-max
2.用戶級別,即用戶進(jìn)程能打開的最大文件描述符數(shù)量(參考 man limits.conf?或者 https://linux.die.net/man/5/limits.conf)。
設(shè)置方法:
# vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
查看方法(無需重啟系統(tǒng)。當(dāng)前用戶重新登錄后生效。或者切換到具體的用戶,立刻生效):
# su - username
$ ulimit -Hn
$ ulimit -Sn
注意:
CentOS 還需開啟 pam_limits 模塊,因為?limits.conf?文件相當(dāng)于?pam_limits?模塊的配置文件。
# vi?/etc/pam.d/login
session required pam_limits.so
第二個問題:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
原因分析:net.core.somaxconn?參數(shù)的值太小了。即全連接(即 accept 連接)的最大隊列長度太小了。
解決方法:
# vi /etc/sysctl.conf
net.core.somaxconn = 511
# sysctl -p
查看方法:
# cat /proc/sys/net/core/somaxconn
# sysctl net.core.somaxconn
第三個問題:
WARNING overcommit_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?指的是進(jìn)程申請的內(nèi)存大小。當(dāng)參數(shù)值為 0?時,如果一次性申請的內(nèi)存大小超過了系統(tǒng)總內(nèi)存,有可能被拒絕。當(dāng)參數(shù)值為 0?時,有可能會導(dǎo)致?redis?執(zhí)行 bgsave?操作保存 rdb?文件失敗。(參考:http://linuxperf.com/?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?時延變大和造成內(nèi)存使用問題(參考: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]