解決redis啟動的警告日志問題
redis啟動時,出現(xiàn)警告日志
原因是redis緩存的數(shù)據(jù)過多,沒有提前做好數(shù)據(jù)過期策略,導(dǎo)致超過物理機(jī)的實(shí)際內(nèi)存。
需要修改計算機(jī)內(nèi)存策略
(1)警告描述,不能設(shè)置tcp的堆積為511
因?yàn)?proc/sys/net/core/somaxconn的值為128太低。
報錯:
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
分析:
然后了解到/proc/sys/net/core/somaxconn為linux的內(nèi)核參數(shù),即linux每端扣可以監(jiān)聽的最大tcp數(shù)量。
解決方案:
修改linux系統(tǒng)參數(shù),在里面增加net.core.somaxconn配置,注意:直接修改/proc/sys/net/core/somaxconn內(nèi),系統(tǒng)重啟后會還原。
永久解決:vim /etc/sysctl.conf
net.ipv4.conf.default.accept_source_route = 1
立即生效:sysctl -p
(2)一臺機(jī)器如果內(nèi)存用完,在進(jìn)行bgsave時,可能會報錯
錯誤信息大概如下:
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.
分析:
當(dāng)執(zhí)行redis的bgsave命令時,redis會fork一個進(jìn)程把redis中的內(nèi)存數(shù)據(jù)寫入磁盤。
這樣的好處是,copy on write,有效的節(jié)省了內(nèi)存占用。
但是,bgsave時,如果有數(shù)據(jù)變更,一樣需要申請內(nèi)存。
當(dāng)申請內(nèi)存時,如果發(fā)現(xiàn)內(nèi)存不夠,可能就會報上面的錯誤
vim /etc/sysctl.conf
net.core.somaxconn= 1024 sysctl vm.overcommit_memory=1 vm.overcommit_memory = 1
立即生效:sysctl -p
(3)使用的是透明大頁,可能導(dǎo)致redis延遲和內(nèi)存使用問題
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.
臨時解決方法:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久解決方法:
將其寫入/etc/rc.local文件中
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled fi
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
談?wù)凴edis分布式鎖的正確實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Redis分布式鎖的正確實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Redis+Caffeine實(shí)現(xiàn)分布式二級緩存組件實(shí)戰(zhàn)教程
這篇文章主要介紹了Redis+Caffeine實(shí)現(xiàn)分布式二級緩存組件實(shí)戰(zhàn)教程,介紹了分布式二級緩存的優(yōu)勢,使用組件的方法,通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法
這篇文章主要介紹了銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Redis常用數(shù)據(jù)類型命令實(shí)例匯總
這篇文章主要介紹了Redis常用數(shù)據(jù)類型命令實(shí)例匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10詳解使用Redis SETNX 命令實(shí)現(xiàn)分布式鎖
本篇文章主要介紹了詳解使用Redis SETNX 命令實(shí)現(xiàn)分布式鎖,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01