Redis連接數不釋放問題

1、發現問題

我用的是springboot構建的項目,網關中連接redis存放每次請求的參數,以此達到不能重複請求的目的。

發現經常控制檯報遠程主機關閉一個連接的錯誤,每次報這樣的錯誤,我就必須重啓項目纔行。非常麻煩,之前沒有時間深究,現在今天痛下決心向百度請教一下。

2、定位問題

查詢redis相關命令

客戶端遠程連接redis  redis-cli.exe -h  IP  -p 6379 -a  密碼

查看連接數  info clients   發現兩千多連接,肯定不正常,因爲是測試環境。

查看超時時間 config get timeout   爲0 爲0代表無限制 一直連接

設置超時時間 config set timeout 100    設置爲100s

過幾分鐘後 再次查看 會發現變的很少了

3、問題本質

Redis的客戶端超時機制

在業務場景中,一般會由Redis客戶端進行連接資源管理,例如分配連接、監控連接狀態、回收連接池資源等。默認設置下,Redis不會主動斷開連接,即使這個客戶端已經空閒了很長時間。但在業務核心應用中,建議配置timeout參數以使Redis具有主動回收資源的能力。否則,如果客戶端出現異常,連接池資源得不到及時回收,可能因空閒連接佔滿連接池導致服務崩潰。核心應用出現這樣的問題可能引發整個業務的混亂,後果嚴重。

timeout參數值的單位爲秒(s),取值範圍爲0-100000。默認值爲0,表示無限制。在實際運行中,爲了提高性能,Redis不一定會精確地按照timeout的值規定的時間來斷開符合條件的空閒連接,例如設置timeout爲10s,但空閒連接可能在12s後,服務器中新增很多連接時纔會被斷開。如需降低這個延遲,可適當增大hz參數的值,提高負責斷開超時連接的Redis定時任務的運行頻率。

貼上阿里雲地址 還是阿里爸爸說的很清楚

https://help.aliyun.com/document_detail/143105.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章