日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Redis客戶端常見異常-創(chuàng)新互聯(lián)

客戶端讀寫超時(shí)

山陽ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
  • 讀寫超時(shí)時(shí)間設(shè)置得過短
  • 命令本身就比較慢
  • 客戶端與服務(wù)端網(wǎng)絡(luò)不正常
  • redis自身發(fā)生堵塞

客戶端連接超時(shí)

  • 連接超時(shí)時(shí)間設(shè)置過短
  • redis發(fā)生阻塞,造成tcp-backlog 已滿,造成新的連接失敗
  • 客戶端與服務(wù)端網(wǎng)絡(luò)不正常

客戶端緩沖區(qū)異常

  • 輸出緩沖區(qū)滿,例如將普通客戶端的輸出緩沖區(qū)設(shè)置為1M 1M 60;
config set client-output-buffer-limit "normal 1048576  1048576  60  slave  268435456  67108864  60  pubsub 33554432  8388608 60"

如果使用get 命令獲取一個(gè)bigkey(例如3M) ,就會(huì)出現(xiàn)異常,因?yàn)槟J(rèn)位1M(1048576字節(jié))

  • 長時(shí)間閑置連接被服務(wù)端主動(dòng)斷開(timeout參數(shù)設(shè)置,當(dāng)閑置時(shí)間大于這個(gè)值,就會(huì)被服務(wù)端主動(dòng)斷開)
  • 不正常并發(fā)讀寫

Lua腳本正在執(zhí)行

如果redis 正在執(zhí)行l(wèi)ua腳本,并且超過了lua-time-limit ,此時(shí)其它客戶端調(diào)用redis 時(shí),會(huì)收到redis busy running a script;

可以使用腳本殺死,script kill 或者 shutdown save

需要注意的是script kill 該命令在腳本執(zhí)行過寫操作是不會(huì)生效的,所以要么等待腳本執(zhí)行結(jié)束或者是shutdown save 停掉redis服務(wù),雖然redis腳本好用,但是需要謹(jǐn)慎使用。

redis正在加載持久化文件

如果redis正在加載持久化文件時(shí),客戶端調(diào)用redis ,就會(huì)報(bào)loading redis is loading the dataset in memory錯(cuò)誤

redis使用的內(nèi)存超過maxmemory配置

客戶端在執(zhí)行寫操作時(shí),如果redis 的使用內(nèi)存大于maxmemory 的設(shè)置,會(huì)收到 oom used memory >maxmemory 錯(cuò)誤;
此時(shí)應(yīng)該調(diào)整maxmemory 的值并造成內(nèi)存增長的原因。當(dāng)然這也是因?yàn)閞edis的淘汰策略使用的是默認(rèn)值:maxmemory-policy:noeviction
noeviction(默認(rèn)策略):對(duì)于寫請(qǐng)求不再提供服務(wù),直接返回錯(cuò)誤
臨時(shí)解決方案:config set maxmemory-policy allkeys-lru 設(shè)置

客戶端連接數(shù)過大

如果客戶端連接數(shù)超過了maxlients ,新的客戶端連接就會(huì)出現(xiàn)報(bào)錯(cuò):err max number of clients reached

redis 默認(rèn)值為10000 ,正常都是夠用的,出現(xiàn)這種情況屬于異常情況,原因很多,需要后續(xù)排查。

臨時(shí)解決方案就是: 下線一些,應(yīng)用程序中不重要的部分使用,使得連接數(shù)降下來 或者調(diào)整一下maxclients 值進(jìn)行問題修復(fù)。但是還是得找出根源,不然過段時(shí)間又會(huì)出現(xiàn)問題。

客戶端案例分析
例如:redis 內(nèi)存陡增
客戶端接收到 OOM 異常

分析如下:
第一:首先看是否存在主從復(fù)制出現(xiàn)問題,使用dbsize 查看key的對(duì)比大小
第二:其它原因?qū)е轮鞴?jié)點(diǎn)內(nèi)存使用過大,排查是否由客戶端緩沖區(qū)造成主節(jié)點(diǎn)內(nèi)存陡增,使用 info clients 命令查詢信息如下:

127.0.0.1:6379>info clients
# Clients
connected_clients:1   
cluster_connections:0 
maxclients:10000 
client_recent_max_input_buffer:1689600 
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

很明顯輸出緩存區(qū)不太正常,大的緩存區(qū)已經(jīng)超過了168萬多個(gè)對(duì)象了,這個(gè)時(shí)候需要通過client list 命令找到omem 不正常的連接,一般來說omem 為0 (因?yàn)樗俣茸銐蚩欤瑘?zhí)行如下代碼可找出omem非零的客戶端連接:

?  ~ redis-cli client list | grep -v "omem=0"


找到如下一條命令:
id=5 addr=127.xxx.xx.1:55606 laddr=127.xx.0.1:6379 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=26 qbuf-free=16864 argv-mem=10 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=1689600 omem=1682131200 tot-mem=34042 events=r cmd=monitor

很明顯是因?yàn)榭蛻舳嗽趫?zhí)行monitor 命令造成的

解決方案:

可以使用client kill 命令殺死這個(gè)連接

?  ~ client kill 127.xxx.xx.1:55606

如何避免此類問題再次發(fā)生呢:

使用rename-command 命令重置monitor命令
限制輸出緩存區(qū)的大小

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享題目:Redis客戶端常見異常-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.dlmjj.cn/article/ccpgij.html