Redis 高並發導致無法串連處理

來源:互聯網
上載者:User

Redis 高並發導致無法串連處理

今天ELK收集日誌的時候,發現收集失敗,尋找各方面原因,最後在redis日誌裡面發現報錯:
[2489] 02 Jun 10:43:42 # Error allocating resoures for the client

錯誤是無法為用戶端分配資源,查看redis串連數:
# redis-cli info | grep connected       
connected_clients:5036
connected_slaves:0

用戶端的串連竟然有達到5000多

查看用戶端串連情況:
redis 127.0.0.1:6379> client list
addr=10.247.64.115:52834 fd=5 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=127.0.0.1:38484 fd=7 idle=0 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=blpop
addr=10.105.1.2:53125 fd=8 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.3:32639 fd=9 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.4:57134 fd=10 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.5:53126 fd=11 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.7:8887 fd=12 idle=2144 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush

每個欄位含義如下:
addr:用戶端的地址和連接埠
fd:通訊端所使用的檔案描述符
idle:以秒計算的空閑時間長度
flags:用戶端 flag
db:該用戶端正在使用的資料庫 ID
sub:已訂閱頻道的數量
psub:已訂閱模式的數量
multi:在事務中被執行的命令數量
qbuf:查詢緩衝區的長度(位元組為單位, 0 表示沒有分配查詢緩衝區)
qbuf-free:查詢緩衝區剩餘空間的長度(位元組為單位, 0 表示沒有剩餘空間)
obl:輸出緩衝區的長度(位元組為單位, 0 表示沒有分配輸出緩衝區)
oll:輸出資料行表包含的對象數量(當輸出緩衝區沒有剩餘空間時,命令回複會以字串對象的形式被入隊到這個隊列裡)
omem:輸出緩衝區和輸出資料行表佔用的記憶體總量
events:檔案描述符事件
cmd:最近一次執行的命令

發現用戶端的idle空閑時間長度太長,串連池維持了太多的串連,需要將不用的串連及時釋放掉:
redis 127.0.0.1:6379> CONFIG SET timeout 30
OK

再次查看串連:
# redis-cli info | grep connected
connected_clients:1137
connected_slaves:0

串連數大量下降

查看串連的具體情況
redis 127.0.0.1:6379> client list
addr=127.0.0.1:38484 fd=7 idle=0 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=blpop
addr=10.105.1.150:39742 fd=269 idle=29 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush
addr=10.105.1.226:53291 fd=5 idle=31 flags=N db=0 sub=0 psub=0 qbuf=0 obl=0 oll=0 events=r cmd=rpush

idle的時間已經限制在30秒了

下面關於Redis的文章您也可能喜歡,不妨參考下:

Ubuntu 14.04下Redis安裝及簡單測試

Redis主從複製基本配置

Redis叢集明細文檔

Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis串連Redis

Redis系列-安裝部署維護篇

CentOS 6.3安裝Redis

Redis安裝部署學習筆記

Redis設定檔redis.conf 詳解

Redis 的詳細介紹:請點這裡
Redis 的:請點這裡

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.