首页 > 数据库 >redis 状态 跟踪 参数值

redis 状态 跟踪 参数值

时间:2022-12-09 11:01:17浏览次数:66  
标签:buffer redis client 跟踪 缓冲区 output 参数值 客户端

1 查看客户端连接信息
通过执行client list命令来查看客户端连接信息,每行都代表一个客户端
127.0.0.1:6379> client list
id=3 addr=127.0.0.1:58752 fd=7 name= age=19951 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client

1.1 客户端标识
id:客户端连接唯一标识,这个id随redis连接自增,redis重启后会从0开始
addr:客户端连接ip和端口
fd:socket文件描述符,与lsof命令结果中fd是同一个。如果该客户端=-1表示该客户端不是外部客户端,而是redis伪装的
name:客户端名字

1.2 输入缓冲区
1.2.1 输入缓冲区介绍
redis为每个客户端分配了输入缓冲区,缓冲区作用是对客户端发送的命令临时保存,同时redis会从输入缓冲区中拉取命令并执行。
qubf:查询缓冲区容量(字节)
qbuf-free:查询缓冲区剩余容量(字节)

1.2.2 输入缓冲区使用不当会出现两个问题
一旦某个客户端缓冲区超过1G,客户端将会被关闭
输入缓冲区不受maxmemory控制,假设一个Redis实例设置maxmemory为4G,已经存储2G数据,如果此时输入缓冲区使用了3G,已经超过4G,则会导致数据丢失、键值淘汰、OOM等情况

1.2.3 造成输入缓冲区过大的原因
redis处理速度跟不上缓冲区输入速度,每次输入输出缓冲区包含大量bigkey
redis发生阻塞,短期内不能处理命令,导致缓冲区积压

1.2.4 缓冲区监控
定期执行client list命令
收集qubf和qubf-free找到异常连接记录并分析,优点是能精准分析每个客户端来定为问题,缺点是执行速度较慢,特别是连接较多的情况下,可能会阻塞redis
还行info clients命令,查找最大输入缓冲区
127.0.0.1:6379> info clients
# Clients
connected_clients:1
client_recent_max_input_buffer:2
client_recent_max_output_buffer:0
blocked_clients:0
优点是执行速度快,缺点是只能查询出输入缓冲区最大的客户端,不能精准定位

1.3 输出缓冲区
obl:定长Output buffer的使用字节数,返回比较小的执行结果
oll:可变大小output buffer的对象个数,返回比较大的执行结果,如大字符串,hgetall、smembers执行结果
omem:可变大小output buffer的内存使用字节数
输出缓冲区对应的配置是
client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
class:客户端类型,normal-普通客户的,replica-slave客户端,pubsub-发布订阅客户端
hard limit:客户端使用的输出缓冲区大于该值时会关闭
soft limit&soft client:客户端使用的输出缓冲区超过了soft limit并且持续时间超过soft seconds时,客户端会关闭
默认配置如下
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
监控输出缓冲区方案同输入缓冲区

1.4 客户端存活状态
age:客户端连接时间(秒)
idle:客户端连接空闲时间(秒)
当idle和age相差不大时说明该连接最近一段时间处于空闲状态,可以设置连接空闲时间达到一个阈值时释放掉,防止占用太多资源

1.5 杀掉指定ip端口的客户端
client kill ip:port

2 客户端缓冲区统计
127.0.0.1:6379> info clients
# Clients
connected_clients:1
client_recent_max_input_buffer:2
client_recent_max_output_buffer:0
blocked_clients:0
connected_clients:当前节点客户端连接数,一旦超过最大值则新连接将被拒绝
client_recent_max_input_buffer:当前所有输入缓冲区占用最大容量
client_recent_max_output_buffer:当前所有输出缓冲区占用最大容量
blocked_clients:正在执行阻塞命令个数,如blpop,brpop等

3 客户端连接数统计
127.0.0.1:6379> info stats
# Stats
total_connections_received:5
……
rejected_connections:0
total_connections_received:redis自启动以来处理的客户端连接总数
rejected_connections:redis自启动以来拒绝的客户端连接总数

4 内存监控
4.1 查看那当前内存使用大小
127.0.0.1:6379> info memory
# Memory
used_memory:1264056,数据占用多少内存(字节)
used_memory_human:1.21M
used_memory_rss:20791296 redis进程占用总物理内存量
used_memory_rss_human:19.83M
used_memory_peak:1284936,数据占用内存的峰值(字节)
used_memory_peak_human:1.23M

4.2 查看内存配置大小
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"
0表示不限制

标签:buffer,redis,client,跟踪,缓冲区,output,参数值,客户端
From: https://www.cnblogs.com/ruiy/p/16968334.html

相关文章

  • Redis配置、优化以及相命令
    一、关系数据库和非关系型数据库1、关系型数据库关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一......
  • Redis 高级使用
    生成全局idid使用Long类型,8个字节,64bitID的组成部分:符号位:1bit,永远为0时间戳:31bit,以秒为单位,可以使用69年序列号:32bit,秒内的计数器,支持每秒产生2^32个不......
  • 什么是redis的hash记录(key)类型?
    redis中的hash记录类型是什么? redishash是一种记录的类型,或者说是数据类型。 存储的是:field-value(字段-值)对的集合。 比如:一个用户的,姓名-张三,地址-北京xx,年......
  • Redis主从复制,哨兵模式和集群模式
    一、主从复制1.1主从复制-哨兵-集群主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操......
  • Redis面试题总结(2022)
    1基本概念1.1常见考点1、Redis为何这么快?1)基于内存;2)单线程减少上下文切换,同时保证原子性;3)IO多路复用;4)高级数据结构(如SDS、Hash以及跳表等)。2、为何使用单线程?官方......
  • ASP.NET Core缓存Redis最佳实践+分布式Session+单点登录(SSO)
    《ASP.NETCore分布式缓存RedisLock分布锁最佳实践》1、JMeter模拟高并发工具简单入门使用2、redis分布式锁介绍3、高并发扣减库存带来的问题与思考4、netcore基于StackE......
  • Redis项目总结--缓存更新策略
    Redis项目总结--缓存更新策略1.更新策略内存淘汰超时剔除主动更新说明不用自己维护,利用Redis内存淘汰机制,内存不足时自动淘汰部分数据,下次查询时更新缓存给......
  • Redis的三种模式
    一、主从复制1.1主从复制的概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只......
  • Redis 主从复制、哨兵模式、Cluster集群
    一、Redis主从复制1.1、什么是主从复制如图:将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由......
  • NoSQL之redis的配置和优化
    一、关系数据库和非关系数据库1.1、什么是关系型数据库一个结构化的数据库,创建在关系模型基础上(二维表格模型)基础上一般面向于记录SQL语句(标准数据查询语言)就是......