##redis客户端连接数
##redis通过监听一个TCP端口或socket的方式接收来自客户端的连接,当与客户端建立连接后,redis内部会进行如下操作:(1)客户端socket会被设置为非阻塞模式,因为redis在网络时间处理上采用的是非阻塞多路复用模型;(2)然后为这个socket设置TCP_NODELAY属性,禁用Nagle算法;(3)然后创建一个可读的文件事件用于监听这个客户端socket的数据发送。
##redis最大连接数
##(1.1)2.6之后版本,可以修改最大连接数配置,默认10000,可以在redis.conf配置文件中修改
...
# maxclients 10000
...
1.
2.
3.
##(1.2)启动redis.service服务时加参数--maxclients 100000来设置最大连接数限制
redis-server --maxclients 100000 -f /etc/redis.conf
1.
##命令行查看 & 修改稿redis最大连接数
127.0.0.1:6379> CONFIG GET maxclients
##1) "maxclients"
##2) "10000"
127.0.0.1:6379>
1.
2.
3.
4.
##redis-cli命令控制行中获取客户端信息命令
CLIENT LIST获取客户端列表
CLIENT SETNAME 设置当前连接点redis的名称
CLIENT GETNAME 查看当前连接的名称
CLIENT KILL ip:port 杀死指定连接
CLIENT LIST
##id=3 addr=127.0.0.1:36588 fd=5 name= age=7 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
CLIENT SETNAME js
##OK
CLIENT LIST
##id=3 addr=127.0.0.1:36588 fd=5 name=js age=37 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
CLIENT GETNAME
##"js"
CLIENT KILL id 3
生产问题:
redis集群客户端连接满,redis连接数居高不下,应用中redis请求报连接满的错,导致返回异常。
解决方案:
在应用中配置了redis的最大空闲连接数和最大空闲时间后,还需要在redis的配置中,配置空闲连接的超时时间 CONFIG SET timeout 30。timeout参数值的单位为秒(s),取值范围为0~100000。