redis未設置idle超時時間導致連接過多


今天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秒了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM