解決redis啟動(dòng)的警告日志問(wèn)題
redis啟動(dòng)時(shí),出現(xiàn)警告日志
原因是redis緩存的數(shù)據(jù)過(guò)多,沒(méi)有提前做好數(shù)據(jù)過(guò)期策略,導(dǎo)致超過(guò)物理機(jī)的實(shí)際內(nèi)存。
需要修改計(jì)算機(jī)內(nèi)存策略

(1)警告描述,不能設(shè)置tcp的堆積為511
因?yàn)?proc/sys/net/core/somaxconn的值為128太低。
報(bào)錯(cuò):
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)聽(tīng)的最大tcp數(shù)量。
解決方案:
修改linux系統(tǒng)參數(shù),在里面增加net.core.somaxconn配置,注意:直接修改/proc/sys/net/core/somaxconn內(nèi),系統(tǒng)重啟后會(huì)還原。
永久解決:vim /etc/sysctl.conf
net.ipv4.conf.default.accept_source_route = 1
立即生效:sysctl -p
(2)一臺(tái)機(jī)器如果內(nèi)存用完,在進(jìn)行bgsave時(shí),可能會(huì)報(bào)錯(cuò)
錯(cuò)誤信息大概如下:
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命令時(shí),redis會(huì)fork一個(gè)進(jìn)程把redis中的內(nèi)存數(shù)據(jù)寫入磁盤。
這樣的好處是,copy on write,有效的節(jié)省了內(nèi)存占用。
但是,bgsave時(shí),如果有數(shù)據(jù)變更,一樣需要申請(qǐng)內(nèi)存。
當(dāng)申請(qǐng)內(nèi)存時(shí),如果發(fā)現(xiàn)內(nèi)存不夠,可能就會(huì)報(bào)上面的錯(cuò)誤

vim /etc/sysctl.conf
net.core.somaxconn= 1024 sysctl vm.overcommit_memory=1 vm.overcommit_memory = 1
立即生效:sysctl -p
(3)使用的是透明大頁(yè),可能導(dǎo)致redis延遲和內(nèi)存使用問(wèn)題
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.
臨時(shí)解決方法:
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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis實(shí)現(xiàn)自動(dòng)清理過(guò)期鍵值對(duì)的代碼示例
在這個(gè)數(shù)據(jù)爆炸的時(shí)代,內(nèi)存就像珍貴的土地資源,而Redis則是這片土地上的智能管家,它不僅能高效存儲(chǔ)數(shù)據(jù),還能像秋葉定時(shí)凋零般,讓鍵值對(duì)在指定時(shí)間自動(dòng)消失,本文小編給大家介紹了Redis實(shí)現(xiàn)自動(dòng)清理過(guò)期鍵值對(duì)實(shí)戰(zhàn),需要的朋友可以參考下2025-06-06
利用Redis進(jìn)行數(shù)據(jù)緩存的項(xiàng)目實(shí)踐
在實(shí)際的業(yè)務(wù)場(chǎng)景中,Redis 一般和其他數(shù)據(jù)庫(kù)搭配使用,用來(lái)減輕后端數(shù)據(jù)庫(kù)的壓力,本文就介紹了利用Redis進(jìn)行數(shù)據(jù)緩存的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2022-06-06
Redis下載部署并加入idea應(yīng)用的小結(jié)
這篇文章主要介紹了Redis下載部署并加入idea應(yīng)用,需要的朋友可以參考下2022-10-10
Redis數(shù)據(jù)類型string和Hash詳解
大家都知道Redis中有五大數(shù)據(jù)類型分別是String、List、Set、Hash和Zset,本文給大家分享Redis數(shù)據(jù)類型string和Hash的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧2022-03-03

