redis lettuce連接池經(jīng)常出現(xiàn)連接拒絕(Connection refused)問(wèn)題解決
一.軟件環(huán)境
windows10、11系統(tǒng)、springboot2.x、redis 6 7
linux(centos)系統(tǒng)沒(méi)有出現(xiàn)這問(wèn)題,如果你是linux系統(tǒng)碰到的,本文也有一定大參考價(jià)值。
根本思路就是:tcp/ip連接的?;?keepalive)。
二.問(wèn)題描述
在springboot項(xiàng)目中使用了lettuce作為redis的連接池,在本地開發(fā)環(huán)境windows系統(tǒng)中,隔5分鐘不操作,再次需要訪問(wèn)redis時(shí),從連接池獲取一個(gè)連接去操作redis就會(huì)出現(xiàn)連接拒絕,一般直到取完max-idle(最大空閑連接數(shù))所有連接都是連接拒絕,直到開始創(chuàng)建新的連接,才能連接上redis。
三.問(wèn)題分析
測(cè)試環(huán)境(linux)連的是同一個(gè)redis服務(wù),卻沒(méi)有出現(xiàn)這樣的問(wèn)題。
之前也試著從連接池配置去解決問(wèn)題,然并卵。。。
lettuce:
pool:
# 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制)
max-active: 8
# 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制)
max-wait: 1
# 連接池中的最大空閑連接
max-idle: 8
# 連接池中的最小空閑連接
min-idle: 0
cluster:
refresh:
adaptive: true
#20秒自動(dòng)刷新一次
period: 20也試過(guò)網(wǎng)上說(shuō)的各種方法都沒(méi)有效果。
后面想著,既然在linux系統(tǒng)中運(yùn)行沒(méi)問(wèn)題,windows系統(tǒng)有問(wèn)題,在其它條件相同的情況下,那就只有操作系統(tǒng)的差異了。
那就可能是兩個(gè)系統(tǒng)維護(hù)tcp/ip的方式的不同了,因?yàn)檫B接池中的連接,本質(zhì)上就是一個(gè)個(gè)tcp/ip連接,要想讓連接?;睿?wù)端和客戶端,至少得有一方去做?;睿╧eepalive)操作。
為什么是隔5分鐘不操作,就必然出現(xiàn)redis連接拒絕呢?于是在redis配置文件中搜索“keepalive”發(fā)現(xiàn)tcp-keepalive配置,默認(rèn)300s,這不正好5分鐘嗎?該配置是服務(wù)端每隔300秒檢查一下客戶端連接,如果可以連通,則讓連接?;?,如果連不通了,則將連接銷毀。

那么導(dǎo)致redis服務(wù)端做?;畈僮骱?,redis連接就不可用了,應(yīng)該就是windows系統(tǒng)在這5分鐘內(nèi),將tcp/ip連接給干掉了,導(dǎo)致redis服務(wù)端連接不到就把連接干掉了,而lettuce并不知道連接已經(jīng)斷開了,當(dāng)有請(qǐng)求需要連接redis時(shí),就從lettuce中拿一個(gè)已經(jīng)被服務(wù)端斷開連接去操作redis,于是就得到了連接拒絕的響應(yīng)。
四.解決方案
方案 1:減少redis服務(wù)端配置文檔的tcp-keepalive的間隔時(shí)間,將上圖中的設(shè)置改為60后,重啟服務(wù),經(jīng)過(guò)測(cè)試就沒(méi)有連接拒絕的問(wèn)題了。
方案2:增加windows系統(tǒng)的tcp/ip連接的存活時(shí)間,但是這個(gè)修改過(guò)幾個(gè)配置,好像沒(méi)有效,也有說(shuō)法是防火墻、殺毒軟件的防護(hù)策略等管理著tcp/ip的存活時(shí)間。如不可用,建議直接使用方案1。
到此這篇關(guān)于redis lettuce連接池經(jīng)常出現(xiàn)連接拒絕(Connection refused)問(wèn)題解決的文章就介紹到這了,更多相關(guān)redis lettuce連接池連接拒絕內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實(shí)現(xiàn)在線?+?離線模式進(jìn)行遷移?Redis?數(shù)據(jù)實(shí)戰(zhàn)指南
這篇文章主要介紹了實(shí)現(xiàn)在線?+?離線模式進(jìn)行遷移?Redis?數(shù)據(jù)實(shí)戰(zhàn)指南的相關(guān)資料,需要的朋友可以參考下2023-01-01
redis key命名規(guī)范的設(shè)計(jì)
如果結(jié)構(gòu)規(guī)劃不合理、命令使用不規(guī)范,會(huì)造成系統(tǒng)性能達(dá)到瓶頸、活動(dòng)高峰系統(tǒng)可用性下降,也會(huì)增大運(yùn)維難度,本文主要介紹了redis key命名規(guī)范的設(shè)計(jì),感興趣的可以了解一下2024-03-03
Redis延遲隊(duì)列和分布式延遲隊(duì)列的簡(jiǎn)答實(shí)現(xiàn)
在我們的工作中,很多地方使用延遲隊(duì)列,比如訂單到期沒(méi)有付款取消訂單,制訂一個(gè)提醒的任務(wù)等都需要延遲隊(duì)列,那么我們需要實(shí)現(xiàn)延遲隊(duì)列,本文就來(lái)介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2021-05-05
Redis中Hash從使用過(guò)程到原理說(shuō)明
Redis Hash結(jié)構(gòu)用于存儲(chǔ)字段-值對(duì),適合對(duì)象數(shù)據(jù),支持HSET、HGET等命令,采用ziplist或hashtable編碼,通過(guò)漸進(jìn)式rehash優(yōu)化性能,適用于購(gòu)物車、計(jì)數(shù)器等場(chǎng)景2025-09-09
使用高斯Redis實(shí)現(xiàn)二級(jí)索引的方法
本文介紹了如何通過(guò)高斯Redis搭建二級(jí)索引,二級(jí)索引在電商、圖(hexastore)、游戲等領(lǐng)域具有廣泛的應(yīng)用場(chǎng)景,高斯redis現(xiàn)網(wǎng)亦有很多類似應(yīng)用,需要的朋友跟隨小編一起看看吧2022-07-07
redis存儲(chǔ)空間復(fù)雜度和時(shí)間復(fù)雜度的平衡
本文主要介紹了在獎(jiǎng)品概率計(jì)算中,如何平衡內(nèi)存占用和時(shí)間復(fù)雜度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-02-02
Redis報(bào)錯(cuò):無(wú)法連接Redis服務(wù)的解決方法
在Linux系統(tǒng)上運(yùn)行Redis服務(wù)時(shí),有時(shí)會(huì)遇到“無(wú)法連接Redis服務(wù)”的報(bào)錯(cuò),本文就詳細(xì)的介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09

