Redis相关监控参数【转】

1 慢查询

默认情况下命令若是执行时间超过10ms就会被记录到日志,slowlog只会记录其命令执行的时间,不包含io往返操作,也不记录单由网络延迟引起的响应慢。如果想修改慢命令的标准可以使用下面的命令

超过5毫秒为慢命令
config set slowlog-log-slower-than 5000

获取最慢的n条数据

slowlog get {n}

eg.

127.0.0.1:6379> slowlog get 2
1) 1) (integer) 7923
   2) (integer) 1544423728
   3) (integer) 27501
   4) 1) "KEYS"
      2) "*"

参数含义:

  • 1=日志的唯一标识符
  • 2=被记录命令的执行时间点,以 UNIX 时间戳格式表示
  • 3=查询执行时间,以微秒为单位。例子中命令使用27毫秒。
  • 4= 执行的命令,以数组的形式排列。完整命令是config get *。

2 大对象

使用scanning方式,对redis整个keyspace进行统计(数据量大时采样),寻找每种数据类型key的最大size(key)和平均size。(5种数据类型(String、hash、list、set、zset)的最大key). 该程序使用 SCAN 命令,因此它可以在不影响客户端操作的情况下在繁忙的服务器上执行,不过也可以使用-i选项来限制所请求的每100个键的扫描过程的秒数。 例如,-i 0.1会减慢程序的执行速度,但也会大幅减轻服务器上的负载 执行命令:

redis-cli -h {ip} -p {port} --bigkeys

建议:

把大对象拆分为多个小对象,防止一次命令操作过多数据

eg.

~]# redis-cli --bigkeys

#Scanning the entire keyspace to find biggest keys as well as
#average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
#per 100 SCAN commands (not usually needed).

[00.00%] Biggest string found so far 'db:zz' with 23 bytes
[00.00%] Biggest string found so far 'prefix_1519436646796_2018_5_320401_001_9' with 73 bytes
[00.00%] Biggest string found so far 'prefix_1511407515841_2018_5_320586_101_-1' with 74 bytes
[00.00%] Biggest string found so far 'XX152844756614862018' with 1219 bytes
[00.03%] Biggest string found so far 'xxxx.m.164c2285-f8ed-4ed9-ad5e-c8633846ac95.21001004' with 24662 bytes
[00.25%] Biggest string found so far 'cpt.xml.model.key:280' with 32914 bytes
[00.71%] Biggest string found so far 'xxxx.m.164c2285-f8ed-4ed9-ad5e-c8633846ac95.48' with 94341 bytes
[01.84%] Biggest set    found so far 'spring:session:expirations:1545198360000' with 2 members
[05.58%] Biggest hash   found so far 'spring:session:sessions:53490998-30c2-4850-8f73-646fe82cd7ee' with 4 fields
[06.29%] Biggest string found so far 'xxxx.m.164c2285-f8ed-4ed9-ad5e-c8633846ac95.35001001' with 120437 bytes
[07.74%] Biggest hash   found so far 'spring:session:sessions:c28d62e7-27c5-439b-aaf7-7e3d7915db62' with 10 fields
[08.14%] Biggest string found so far 'xxxx.m.d526ca6d-f9a3-48f4-8117-3474778d1fbd.221' with 420048 bytes
[08.70%] Biggest string found so far 'xxxx.m.164c2285-f8ed-4ed9-ad5e-c8633846ac95.221' with 420086 bytes
[53.84%] Biggest set    found so far 'spring:session:expirations:1545198540000' with 4 members
[81.98%] Biggest hash   found so far 'spring:session:sessions:f3459c14-fb8d-44cc-beab-20a68a2699f0' with 11 fields
[82.04%] Biggest string found so far 'qwer' with 443204 bytes
keys       mem      clients blocked requests            connections
33463      39.28M   128     0       1597991946 (+0)     21894492
33463      39.37M   127     0       1597991987 (+41)    21894500
33463      39.29M   127     0       1597992021 (+34)    21894500
33463      39.26M   127     0       1597992060 (+39)    21894500
33463      39.37M   127     0       1597992098 (+38)    21894500
  • 客户端相关参数 127.0.0.1:6379> info Clients #Clients connected_clients:126 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 ## 4 连接的客户端数量(connected_clients)sh redis-cli -h {ip} -p {port} info Clients | grep connected_clients

这个值跟使用redis的服务的连接池配置关系比较大,Redis默认允许客户端连接的最大数量是10000。

127.0.0.1:6379> config get maxclients
1) "maxclients"
2) "10000"

若是看到连接数超过5000以上,那可能会影响Redis的性能。倘若一些或大部分客户端发送大量的命令过来,这个数字会低的多。根据连接数负载的情况,这个数字应该设置为预期连接数峰值的110%到150之间,若是连接数超出这个数字后,Redis会拒绝并立刻关闭新来的连接。通过设置最大连接数来限制非预期数量的连接数增长,是非常重要的。 eg.

~]# redis-cli info Clients | grep connected_clients
connected_clients:129

5 拒绝连接数

redis-cli info stats | grep rejected_connections

eg.

~]# redis-cli info stats | grep rejected_connections
rejected_connections:0

6 阻塞客户端数量

blocked_clients,一般是执行了list数据类型的BLPOP或者BRPOP命令引起的,这个值最好应该为0

redis-cli -h {ip} -p {port} info Clients | grep blocked_clients

eg.

~]# redis-cli info Clients | grep blocked_clients
blocked_clients:0

7 内存碎片率

~]# redis-cli -h {ip} -p {port} info | grep mem_fragmentation_ratio
mem_fragmentation_ratio:1.58

info信息中的mem_fragmentation_ratio给出了内存碎片率的数据指标,它是由操系统分配的内存除以Redis分配的内存得出: used_memory和used_memory_rss数字都包含的内存分配有:

  • 用户定义的数据:内存被用来存储key-value值。
  • 内部开销: 存储内部Redis信息用来表示不同的数据类型。

used_memory_rss的rss是Resident Set Size的缩写,表示该进程所占物理内存的大小,是操作系统分配给Redis实例的内存大小。除了用户定义的数据和内部开销以外,used_memory_rss指标还包含了内存碎片的开销,内存碎片是由操作系统低效的分配/回收物理内存导致的。

内存碎片率稍大于1是合理的,这个值表示内存碎片率比较低,也说明redis没有发生内存交换。但如果内存碎片率超过1.5,那就说明Redis消耗了实际需要物理内存的150%,其中50%是内存碎片率。若是内存碎片率低于1的话,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换。

8 监视在Redis中执行的命令

使用MONITOR模式后,将自动输入监控模式。它将打印Redis实例收到的所有命令

redis-cli -h {ip} -p {port} monitor

eg.

~]# redis-cli monitor
OK
1545199828.803965 [0 172.23.0.238:60576] "PING"
1545199828.804126 [0 172.23.0.238:60576] "SETNX" "scanKey" "xxxxxx"
1545199828.804392 [0 172.23.0.238:60576] "PING"
1545199828.804572 [0 172.23.0.238:60576] "PEXPIRE" "scanKey" "10000"

参考地址: https://redis.io/topics/rediscli https://www.cnblogs.com/mushroom/p/4738170.html

Original: https://www.cnblogs.com/rwxwsblog/p/13735048.html
Author: 秋楓
Title: Redis相关监控参数【转】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/528978/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java中List<T>和List<?>的区别【转载】

    ` List、List<?>、List这三者都可以&#x…

    Linux 2023年6月8日
    089
  • 方法的深度理解

    权限修饰符 返回值类型 类名(行参列表 )throws 异常的类型{ //方法体 约定俗称:子类中叫重写的方法,父类中叫被重写的方法。 ①子类重写的方法名和行参列表和父类被重写的方…

    Linux 2023年6月14日
    0101
  • 免外围电路ESP32/ESP8266系列单片机串口一键下载方案

    一、概述 CH340X、CH343、CH342等USB转串口芯片支持免外围电路ESP32/ESP8266等单片机串口一键下载功能,对此类支持多模式启动的单片机,无需外围三极管等逻辑…

    Linux 2023年6月7日
    0134
  • SpringBoot——自定义Redis缓存Cache

    SpringBoot自带Cache存在问题: 1.生成Key过于简单,容易冲突 默认为cacheNames + ":" + Key2.无法设置过期时间,默认时间…

    Linux 2023年5月28日
    0101
  • 我叫Mongo,干了「索引探索篇」提升我的效率,值得您拥有

    这是mongo第四篇”索引探索”,后续会连续更新4篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟…

    Linux 2023年6月14日
    080
  • OpenStack cinder对接glusterfs存储

    一、创建虚拟机node1 自定义默认下一步稍后安装操作系统选择Linux,红帽6名称位置随意1核就行2G内存就行仅主机网络默认下一步默认下一步默认下一步30G,给单个文件添加一块5…

    Linux 2023年6月8日
    095
  • rtmp和rtsp的区别

    刚刚接触到视频推流,搞不清楚rtmp和rtsp到底有什么区别 1.视频传输 RTSP+RTP主要用于IPTV,原因是传输数据使用的是UDP,在网络环境比较稳定的情况下,传输效率是比…

    Linux 2023年6月8日
    098
  • CentOS 6.x安装php 5.6和redis扩展的全过程

    安装PHP 5.6 注1:如果想更换到php5.5或5.4版本, 直接把上面的56w换成55w或者54w就可以了; 注2:php-opcache和php-xcache会有效的提高p…

    Linux 2023年5月28日
    092
  • Linux 内核软死锁(soft lockup)bug原因分析

    由日志我们看到,CPU一直处于超负载运行,因此导致机器产生断链的告警 解决方法: echo 30 > /proc/sys/kernel/watchdog_thresh sys…

    Linux 2023年6月13日
    0103
  • linux学习相关资料整理

    Posted on2022-09-08 13:09 brad1208 阅读(20 ) 评论() 编辑 linux常用指令记录 Python3.9.9安装 supervisor安装与…

    Linux 2023年6月6日
    096
  • 高速USB转4串口产品设计-RS485串口

    基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动…

    Linux 2023年6月7日
    0108
  • SSH免密登录

    SSH免密登录实现三步: 客户端生成公钥和私钥 上传公钥到服务端 SSH免密登录 (1) 客户端生成和公钥和私钥 ssh-keygen 一路回车即可,默认会在~/.ssh/目录下创…

    Linux 2023年6月7日
    096
  • Redis AOF重写

    AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数…

    Linux 2023年5月28日
    0105
  • Linux命令

    Linux命令是对Linux系统进行管理的命令,对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核…

    Linux 2023年5月27日
    094
  • 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题

    首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上。其中docker中还有若干容器运行。 整体框架图如下: 我们将它分…

    Linux 2023年5月27日
    0178
  • 2021 — 冰与火之歌

    大半夜的睡不着,越发的想给 2021 年作个总结,一想更睡不着了,来唠叨下吧。 一拖再拖的婚礼。本来定在今年正月的婚礼,因为疫情,不敢办,村里也不让办;然后选在国庆吧,卧槽,封城了…

    Linux 2023年6月16日
    0121
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球