• 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秒了

  • 相关阅读:
    0541-leetcode算法实现之反转字符串II-reverseStrII-python&golang实现
    helm 入门简介与安装(1)
    ubuntu18.04 netplan 设置dns,dns不生效
    服务器报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    0344-leetcode算法实现之反转字符串-reverse-string-python&golang实现
    python os模块常用方法总结
    0076-leeycode算法实现之最小覆盖子串-minimum-window-substring-python&golang实现
    0904-leetcode算法实现之水果成篮-fruit-into-baskets-python&golang实现
    0209-leetcode算法实现之长度最小子数组-minimum-size-subarray-sum-python&golang实现
    0977-leetcode算法实现之有序数组的平方sqaure-of-a-sorted-array-python&golang实现
  • 原文地址:https://www.cnblogs.com/cfas/p/9348911.html
Copyright © 2020-2023  润新知