問題分類
當您發(fa)現(xian)(xian)與Redis實例連接出現(xian)(xian)異常(chang)時,可(ke)以根(gen)據本文的內容,從以下幾個(ge)方面進行排查。
- Redis和ECS之間的連接問題
- 密碼問題
- 實例配置問題
- 客戶端連接問題
- 帶寬超限導致連接問題
- 性能問題導致連接超時
Redis和ECS之間的連接問題
客(ke)戶端(duan)所(suo)在的ECS必須和(he)Redis實例(li)在同一個VPC內,并且需要確保ECS和(he)Redis之間可(ke)以正常連(lian)接(jie)。
- 如果是Redis 3.0實例,Redis和ECS的安全組沒有配置正確,連接失敗。
解決方(fang)法(fa):配(pei)置ECS和Redis實例所在安全組規則,允許Redis實例被訪問(wen)。
- 如果是Redis 4.0/5.0/6.0實例,開啟了白名單功能,連接失敗。
如(ru)(ru)果(guo)實(shi)例(li)開啟了白(bai)(bai)名(ming)單,在使用客(ke)(ke)戶(hu)端(duan)連(lian)接時,需(xu)要確(que)保(bao)客(ke)(ke)戶(hu)端(duan)IP是否在白(bai)(bai)名(ming)單內,如(ru)(ru)果(guo)不在白(bai)(bai)名(ming)單,會出現(xian)連(lian)接失敗。客(ke)(ke)戶(hu)端(duan)IP如(ru)(ru)果(guo)有變化,需(xu)要將變化后的IP加(jia)入白(bai)(bai)名(ming)單。
- Redis實例和ECS不在同一個Region。
解決方法:不支持跨Region訪(fang)問,可以在ECS所在的(de)Region創(chuang)建Redis實(shi)例,創(chuang)建時注意選擇與(yu)ECS相同(tong)VPC,創(chuang)建之后,使用數據遷(qian)(qian)移進(jin)行遷(qian)(qian)移,將原有Redis實(shi)例數據遷(qian)(qian)移到新實(shi)例中。
- Redis實例和ECS不在同一個VPC。
不同的(de)VPC,網絡是不相通(tong)的(de),不在(zai)同一VPC下(xia)的(de)ECS無法訪問Redis實(shi)例。可以通(tong)過創建VPC對等連(lian)接,將兩個VPC的(de)網絡打通(tong),實(shi)現跨VPC訪問Redis實(shi)例。
關于創建和使用VPC對等連接,請參考《虛擬私有云用戶指南》的“對等連接”文檔說明。
密碼問題
密碼輸入錯(cuo)誤時,端(duan)口可以連接上,但鑒權認證會失敗。如果忘(wang)記了(le)密碼,可以重置緩存(cun)實例密碼。
實例配置問題
連接Redis時存在拒絕連接,可登錄分布式緩存服務控制臺,進入實例詳情頁面,調整實例參數maxclients的配置,具體操作可參考修改實例配置參數。
客戶端連接問題
(1)在使用Redis-cli連(lian)接Cluster集群時(shi),連(lian)接失敗。
解決方法:請檢查連接命令是否加上 -c ,在連接Cluster集群(qun)節點時(shi)務必(bi)使用正確連接命令。
- Cluster集群連接命令:
./redis-cli -h {dcs_instance_address} -p 6379 -a {password} -c
- 單機、主備、Proxy集群連接命令:
./redis-cli -h {dcs_instance_address} -p 6379 -a {password}
具體連接操作,請參考Redis-cli連接。
(2)出(chu)現Read timed out或Could not get a resource from the pool。
解決方法:
- 排查是否使用了keys命令,keys命令會消耗大量資源,造成Redis阻塞。建議使用scan命令替代,且避免頻繁執行。
- 排查實例是否是Redis 3.0,Redis 3.0底層用的是sata盤,當Redis數據持久化即AOF時,會觸發偶現的磁盤性能問題,導致連接異常,可更換Redis實例為4.0 和5.0版本,其底層是ssd盤,磁盤性能更高,或若不需要持久化可關閉AOF。
(3)出現unexpected end of stream錯誤,導致業務異常。
解決方法:
- Jedis連接池調優,建議調整連接池參數。
- 排查是否大key較多。
連接斷開。
解決方法:
- 調整應用超時時間。
- 優化業務,避免出現慢查詢。
- 建議使用scan命令替代keys命令。
(4)Jedis連接池問題,請參考使用Jedis連接池報錯如何處理?。
帶寬超限導致連接問題
當(dang)實例(li)已使用帶(dai)寬達到實例(li)規格最大帶(dai)寬,可(ke)能會導(dao)致部(bu)分(fen)Redis連(lian)接超時現(xian)象(xiang)。
您可(ke)以(yi)查看監控指標“流控次數”,統計周期(qi)內(nei)被流控的次數,確(que)認(ren)帶寬是否已(yi)經達到(dao)上限。
然后,檢查實例是否有大Key和熱Key,如果存在大Key或者單個Key負載過大,容易造成對于單個Key的操作占用帶寬資源過高。大Key和熱Key操作,請參考緩存分析。
性能問題導致連接超時
使用了keys等消耗資源的(de)命令,導致CPU使用率(lv)超(chao)高;或(huo)者實例沒有(you)設置過期(qi)時間、沒有(you)清除(chu)已過期(qi)的(de)Key,導致存(cun)儲的(de)數據過多,一直(zhi)在內存(cun)中,內存(cun)使用率(lv)過高等,這些(xie)都(dou)容易出(chu)現訪問緩(huan)慢、連(lian)接不(bu)上等情況。
- 建議客戶改成scan命令或者禁用keys命令。
- 查看監控指標,并配置對應的告警。監控項和配置告警步驟,可查看必須配置的告警監控。
例(li)如,可以通過監控指標“內存(cun)利用(yong)率”和(he)“已用(yong)內存(cun)”查看實(shi)例(li)內存(cun)使用(yong)情況、“活躍的客戶(hu)端數量”查看實(shi)例(li)連接數是(shi)否達(da)到上限等。
- 檢查實例是否存在大Key和熱Key。
DCS控制臺提供了大Key和熱Key的分析功能,具體使用,請參考緩存分析