详细分析Redis性能监控指标 附参数解释(全)

news2024/12/29 13:36:49

目录

  • 前言
  • 1. 基本指标
  • 2. 监控命令
  • 3. 实战演示

前言

对于Redis的相关知识推荐阅读:

  1. Redis框架从入门到学精(全)
  2. Python操作Redis从入门到精通附代码(全)
  3. Redis相关知识

1. 基本指标

Redis 是一个高性能的键值存储系统,常用于缓存、消息队列等场景

性能监控是确保 Redis 运行稳定和高效的关键

以下是 Redis 中必须监控的一些重要指标以及它们的详细分析:

内存使用情况连接数命令执行情况持久化CPU 使用率网络流量主从复制延迟缓存命中率慢查询客户端命令队列
1.总内存使用量:监控 Redis 实例占用的总内存量,确保不会超出可用内存

2.内存碎片:监控内存碎片情况,尽量避免内存碎片导致的性能问题

3.命中内存:监控 Redis 缓存命中率,确保大部分请求都可以从内存中获取数据,而不是从磁盘
1.当前连接数:监控当前连接到 Redis 实例的客户端数量,确保不会达到连接上限

2.连接建立速率:监控连接建立速率,确保没有异常的连接波动
1.命令执行速率:监控 Redis 执行命令的速率,了解系统的负载情况

2.最耗时命令:监控最耗时的命令,优化这些命令的执行效率
1.RDB 持久化频率:监控 RDB 持久化的频率,确保数据定期持久化到磁盘

2.AOF 持久化体积:监控 AOF 日志的体积,确保不会过大导致性能下降
1.系统 CPU 使用率:监控 Redis 进程占用的 CPU 使用率,确保不会过高

2.单个命令的 CPU 消耗:监控单个命令的 CPU 消耗,优化高 CPU 消耗的命令
输入/输出流量:监控 Redis 实例的网络输入和输出流量,确保网络带宽足够支持流量需求主从复制延迟时间:监控主从复制的延迟时间,确保从节点能及时同步主节点的数据缓存命中率:监控 Redis 缓存的命中率,确保大部分请求都能从缓存中获取数据,减少对后端存储的访问慢查询日志:监控慢查询日志,找出执行时间较长的查询,进行优化客户端命令队列长度:监控客户端命令队列的长度,避免积压过多的请求导致系统响应延迟

以上指标的监控可以通过 Redis 自带的监控命令(如 INFO 命令)、Redis 的监控工具(如 Redis Monitor、Redis Desktop Manager)以及第三方监控工具(如 Prometheus、Grafana)来实现。及时地监控这些指标,有助于发现潜在的性能问题并及时进行调优,确保 Redis 系统的稳定性和高性能运行

2. 监控命令

  • 获取 Redis 信息:使用 INFO 命令可以获取 Redis 的各种信息,包括内存使用、连接数、持久化信息、统计信息等:redis-cli INFO

  • 监控 Redis 实例的内存使用情况redis-cli INFO memory

  • 监控当前连接数redis-cli INFO clients

  • 查看 Redis 命令执行情况redis-cli INFO commandstats

  • 监控 CPU 使用情况redis-cli INFO CPU

  • 查看网络情况redis-cli INFO stats

  • 查看主从复制延迟redis-cli INFO replication

  • 监控慢查询redis-cli SLOWLOG GET

  • 查看客户端命令队列长度redis-cli INFO clients

这些命令会返回大量的信息,根据需要选择性地获取特定部分的信息进行监控和分析

通常编写脚本来定期运行这些命令,将结果保存到日志文件中,或者使用监控工具来实时获取和展示这些信息

3. 实战演示

以下命令为Window,思路大同小异!

为了讲解演示,以测试库的Redis为例:redis-cli.exe info

在这里插入图片描述

大致的含义如下:

E:\software\Redis>redis-cli.exe info
# Server 关于 Redis 服务器的一般信息,包括版本、构建信息、运行模式等
redis_version:5.0.14.1   # Redis 版本
redis_git_sha1:ec77f72d  # Git 版本号
redis_git_dirty:0
redis_build_id:5627b8177c9289c
redis_mode:standalone  # Redis 运行模式,这里是 standalone(单机模式)
os:Windows  # 操作系统
arch_bits:64
multiplexing_api:WinSock_IOCP
atomicvar_api:pthread-mutex
process_id:10608   # Redis 进程 ID
run_id:65a73910df22810039ae94a51aa66712775b8cf3
tcp_port:6379  # TCP 端口号
uptime_in_seconds:1174094  # 服务器已运行的秒数
uptime_in_days:13  # 服务器已运行的天数
hz:10
configured_hz:10
lru_clock:12732602
executable:E:\software\Redis\"e:\software\redis\redis-server.exe"
config_file:E:\software\Redis\redis.windows.conf

# Clients  关于客户端连接的信息
connected_clients:14  # 当前连接的客户端数量
client_recent_max_input_buffer:4  
client_recent_max_output_buffer:0
blocked_clients:0  # 正在等待阻塞命令执行的客户端数量

# Memory 关于内存使用的信息
used_memory:1009784  # 已分配的内存总量
used_memory_human:986.12K
used_memory_rss:967520
used_memory_rss_human:944.84K
used_memory_peak:1268176  # 内存使用峰值
used_memory_peak_human:1.00M
used_memory_peak_perc:79.62%
used_memory_overhead:937224
used_memory_startup:660344
used_memory_dataset:72560
used_memory_dataset_perc:20.76%
allocator_allocated:1328232
allocator_active:427819008
allocator_resident:436207616
total_system_memory:0
total_system_memory_human:0B
used_memory_lua:37888  # Lua 脚本引擎使用的内存量
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:322.10
allocator_frag_bytes:426490776
allocator_rss_ratio:1.02  
allocator_rss_bytes:8388608
rss_overhead_ratio:0.00
rss_overhead_bytes:-435240096
mem_fragmentation_ratio:1.00  # 内存碎片率
mem_fragmentation_bytes:0
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:273264
mem_aof_buffer:0
mem_allocator:jemalloc-5.2.1-redis
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence
loading:0  # 是否正在加载持久化文件
rdb_changes_since_last_save:0  # 是否正在加载持久化文件
rdb_bgsave_in_progress:0
rdb_last_save_time:1707200299  # 最后一次 RDB 持久化的时间戳
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:0  # 是否启用 AOF 持久化
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0

# Stats  统计信息,包括连接、命令处理、网络流量等
total_connections_received:131  # 接收的连接总数
total_commands_processed:378897 # 处理的命令总数
instantaneous_ops_per_sec:0
total_net_input_bytes:6442981
total_net_output_bytes:1210414995
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:58  # 过期的键总数
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:15292  # 命中键总数
keyspace_misses:1262  # 未命中键总数
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:23662
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication 关于主从复制的信息
role:master  # 角色,这里是 master(主节点)
connected_slaves:0 # 连接的从节点数量
master_replid:89ae92c82f117813f4ac44fcc520a11b695125a1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU 使用情况
used_cpu_sys:5.687500 # 系统 CPU 使用时间
used_cpu_user:22.531250 # 用户 CPU 使用时间
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000

# Cluster 集群相关信息
cluster_enabled:0 # 是否启用集群模式

# Keyspace # 数据库键空间相关信息
db0:keys=64,expires=0,avg_ttl=0 # 数据库 0 的统计信息,包括键数量、过期键数量和平均 TTL

如果要做过滤筛选,不同系统不一样选择:

对于Linux操作系统来说,通过grep筛选
对于Window操作系统来说,通过findstr筛选

推荐阅读:Window命令行 如何查看以及关闭进程

类似如下命令:

在这里插入图片描述
(如果是linux则更换为redis-cli info | grep ops # 每秒操作数
以下为Window:

  • 性能监控:redis-cli.exe info | findstr ops # 每秒操作数
  • 内存监控:redis-cli.exe info | findstr used | grep human
  • 内存碎片率:redis-cli.exe | findstr mem_fragmentation_ratio
  • 已使用内存:redis-cli.exe info | findstr used_memory

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1441153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AWS配置内网EC2服务器上网【图形化配置】

第一种方法:创建EC2选择启用分配公网ip 1. 创建vpc 2. 创建子网 3. 创建互联网网关 创建互联网网关 创建互联网网关 ,设置名称即可 然后给网关附加到新建的vpc即可 4. 给新建子网添加路由规则,添加新建的互联网网关然后点击保存更改 5. 新建…

《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)

文章目录 4.1 用户认证和权限控制4.1.1 基础知识4.1.2 重点案例:使用 Python 管理 MySQL 用户权限4.1.3 拓展案例 4.2 防止 SQL 注入和其他安全威胁4.2.1 基础知识4.2.2 重点案例:使用 Python 和 MySQL 进行安全的数据查询4.2.3 拓展案例 4.3 数据加密和…

第十六篇【传奇开心果系列】Python的OpenCV库技术点案例示例:图像质量评估

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例短博文系列博文目录前言一、图像质量评估方法和相关函数的介绍二、均方误差示例代码三、峰值信噪比示例代码四、结构相似性指数示例代码五、视频质量评估示例代码六、OpenCV均方根误差计算示例代码七、OpenC…

了解海外云手机的多种功能

随着社会的高度发展,海外云手机成为商家不可或缺的工具,为企业出海提供了便利的解决方案。然而,谈及海外云手机,很多人仍不了解其强大功能。究竟海外云手机有哪些功能,可以为我们做些什么呢? 由于国内电商竞…

ubuntu22.04 安装部署05:禁用默认显卡驱动

一、相关文章 ubuntu22.04安装部署03: 设置root密码-CSDN博客 《ubuntu22.04装部署01:禁用内核更新》 《ubuntu22.04装部署02:禁用显卡更新》 二、场景说明 Ubuntu22.04 默认显卡驱动,如果安装cuda,需要单独安装显…

Javaweb之SpringBootWeb案例之异常处理功能的详细解析

3. 异常处理 3.1 当前问题 登录功能和登录校验功能我们都实现了,下面我们学习下今天最后一块技术点:异常处理。首先我们先来看一下系统出现异常之后会发生什么现象,再来介绍异常处理的方案。 我们打开浏览器,访问系统中的新增部…

【开源项目阅读】Java爬虫抓取豆瓣图书信息

原项目链接 Java爬虫抓取豆瓣图书信息 本地运行 运行过程 另建项目,把四个源代码文件拷贝到自己的包下面 在代码爆红处按ALTENTER自动导入maven依赖 直接运行Main.main方法,启动项目 运行结果 在本地磁盘上生成三个xml文件 其中的内容即位爬取…

MPLS VPN功能组件(3)

私网标签分配 通过MPBGP为VPNv4路由分配内层标签 PE从CE接收到IPv4路由后,对该路由加上相应VRF的RD(RD手动配置),使其成为一条VPNV4路由,然后在路由通告中更改下一跳属性为自己,通常是自己的Loopback地址…

【Linux】进程学习(二):进程状态

目录 1.进程状态1.1 阻塞1.2 挂起 2. 进程状态2.1 运行状态-R进一步理解运行状态 2.2 睡眠状态-S2.3 休眠状态-D2.4 暂停状态-T2.5 僵尸状态-Z僵尸进程的危害 2.6 死亡状态-X2.7 孤儿进程 1.进程状态 1.1 阻塞 阻塞:进程因为等待某种条件就绪,而导致的…

Linux操作系统基础(四):Linux连接工具使用

文章目录 Linux连接工具使用 一、为什么要使用远程连接工具 二、虚拟机网络配置 三、获取Linux操作系统IP地址 四、聊一聊Linux系统账号 五、安装finalshell远程连接软件 六、建立连接 七、软件界面与使用说明 Linux连接工具使用 一、为什么要使用远程连接工具 因为一…

USMART是什么?

一、USMART简介 USMART是一个串口调试组件,可以大大提高代码调试效率,为正点原子为STM32开发的类似linux中shell的调试工具。 一般开发者正常情况下,对单片机功能进行调试的过程大致为:下载——调试——修改——下载——调试——…

解决MapboxGL的Popup不支持HTMLDiv元素的问题

解决MapboxGL的Popup不支持HTMLDiv元素的问题 官网给出的文档是不支持HTMLDivElement的,只支持HTML标签。 如果单纯的只显示字符串,那就没问题,如果想在Popup中使用更强大的功能,此时就不行了,下面是源码的一部分显示…

[VulnHub靶机渗透] Sar: 1

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

Python环境下基于最大离散重叠小波变换和支持向量回归的金融时间序列预测

金融时间序列具有非线性、高频性、随机性等特点,其波动情况不仅与当前股票市场、房地产市场、贸易市场等有强联动性,而且大幅度起伏对于其他市场有较大的影响和冲击。由于金融市场受多种因素影响且各影响因素间也存在一定复杂动态交互关系,导…

[CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理

文章目录 前言一、所需环境二、实现思路2.1. 定义了LeNet网络模型结构,并训练了20次2.2 以txt格式导出训练结果(模型的各个层权重偏置等参数)2.3 (可选)以pth格式导出训练结果,以方便后期调试2.4 C CUDA要做的事 三、C CUDA具体实现3.1 新建.cu文件并填好…

nvm安装nodejs 报错certificate has expired or is not yet valid

今天在使用nvm安装nodejs时,突然报如下错误: 从报错信息中很容易知道这是因为镜像凭证过期,所以我们只需要换个镜像即可。 打开你nvm的安装目录下的settings.txt文件,将下面两行添加到里面,如果已经有的就覆盖。 nod…

LeetCode Python - 4. 寻找两个正序数组的中位数

文章目录 题目答案运行结果 题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入:nums1 [1,3], nums2 [2…

Flink CDC 与 Kafka 集成:Snapshot 还是 Changelog?Upsert Kafka 还是 Kafka?

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

【精选】java初识多态 子类继承父类

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

使用 Docker 镜像预热提升容器启动效率详解

概要 在容器化部署中,Docker 镜像的加载速度直接影响到服务的启动时间和扩展效率。本文将深入探讨 Docker 镜像预热的概念、必要性以及实现方法。通过详细的操作示例和实践建议,读者将了解如何有效地实现镜像预热,以加快容器启动速度,提高服务的响应能力。 Docker 镜像预热…