1.描述
连接redis发现1w的连接数被占满了,因为大量无效长连接没有被释放,即使我本地的服务停止了,但是redis端的连接仍然存在。
2.解决思路
由于多个程序共用同一个redis,所以不能从客户端解决问题。只能在redis加超时限制,以清理无效连接。
3.命令介绍
127.0.0.1:6379> info clients #查看连接数
connected_clients:9998
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
##redis-cli命令控制行中获取客户端信息命令
127.0.0.1:6379> CLIENT LIST #获取客户端列表
id=1828 addr=172.31.132.5:50582 fd=73 name= age=231 idle=51 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=1778 addr=192.168.201.144:46871 fd=22 name= age=317 idle=317 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULL
#-------------age:表示连接存在的时间,单位秒
#-------------idle:表示连接空闲时间,单位秒
127.0.0.1:6379> CLIENT SETNAME #设置当前连接点redis的名称
127.0.0.1:6379> CLIENT GETNAME #查看当前连接的名称
127.0.0.1:6379> CLIENT KILL ip:port #杀死指定连接
127.0.0.1:6379> config get timeout #查看超时连接
1) "timeout"
2) "0" #0表示不开启空闲清除
127.0.0.1:6379> config set timeout 600 #设置空闲清理时间 ,修改redis.conf中的timeout属性也行
127.0.0.1:6379>SHUTDOUW #关闭redis
redis-server redis.conf #启动redis
4.操作流程
重启redis,连接数立马降下来。设置超时时间,可保证以后不会出现该问题。