Redis 啟動警告解決方法

第一個問題: 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)前用戶重新登錄后生效?;蛘咔袚Q到具體的用戶,立刻生效):

# 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]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容