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

十念  金牌会员 | 2024-7-17 13:43:13 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 676|帖子 676|积分 2028

前言

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

  • Redis框架从入门到学精(全)
  • Python操作Redis从入门到精通附代码(全)
  • 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

大致的含义如下:
  1. E:\software\Redis>redis-cli.exe info
  2. # Server 关于 Redis 服务器的一般信息,包括版本、构建信息、运行模式等
  3. redis_version:5.0.14.1   # Redis 版本
  4. redis_git_sha1:ec77f72d  # Git 版本号
  5. redis_git_dirty:0
  6. redis_build_id:5627b8177c9289c
  7. redis_mode:standalone  # Redis 运行模式,这里是 standalone(单机模式)
  8. os:Windows  # 操作系统
  9. arch_bits:64
  10. multiplexing_api:WinSock_IOCP
  11. atomicvar_api:pthread-mutex
  12. process_id:10608   # Redis 进程 ID
  13. run_id:65a73910df22810039ae94a51aa66712775b8cf3
  14. tcp_port:6379  # TCP 端口号
  15. uptime_in_seconds:1174094  # 服务器已运行的秒数
  16. uptime_in_days:13  # 服务器已运行的天数
  17. hz:10
  18. configured_hz:10
  19. lru_clock:12732602
  20. executable:E:\software\Redis"e:\software\redis\redis-server.exe"
  21. config_file:E:\software\Redis\redis.windows.conf
  22. # Clients  关于客户端连接的信息
  23. connected_clients:14  # 当前连接的客户端数量
  24. client_recent_max_input_buffer:4  
  25. client_recent_max_output_buffer:0
  26. blocked_clients:0  # 正在等待阻塞命令执行的客户端数量
  27. # Memory 关于内存使用的信息
  28. used_memory:1009784  # 已分配的内存总量
  29. used_memory_human:986.12K
  30. used_memory_rss:967520
  31. used_memory_rss_human:944.84K
  32. used_memory_peak:1268176  # 内存使用峰值
  33. used_memory_peak_human:1.00M
  34. used_memory_peak_perc:79.62%
  35. used_memory_overhead:937224
  36. used_memory_startup:660344
  37. used_memory_dataset:72560
  38. used_memory_dataset_perc:20.76%
  39. allocator_allocated:1328232
  40. allocator_active:427819008
  41. allocator_resident:436207616
  42. total_system_memory:0
  43. total_system_memory_human:0B
  44. used_memory_lua:37888  # Lua 脚本引擎使用的内存量
  45. used_memory_lua_human:37.00K
  46. used_memory_scripts:0
  47. used_memory_scripts_human:0B
  48. number_of_cached_scripts:0
  49. maxmemory:0
  50. maxmemory_human:0B
  51. maxmemory_policy:noeviction
  52. allocator_frag_ratio:322.10
  53. allocator_frag_bytes:426490776
  54. allocator_rss_ratio:1.02  
  55. allocator_rss_bytes:8388608
  56. rss_overhead_ratio:0.00
  57. rss_overhead_bytes:-435240096
  58. mem_fragmentation_ratio:1.00  # 内存碎片率
  59. mem_fragmentation_bytes:0
  60. mem_not_counted_for_evict:0
  61. mem_replication_backlog:0
  62. mem_clients_slaves:0
  63. mem_clients_normal:273264
  64. mem_aof_buffer:0
  65. mem_allocator:jemalloc-5.2.1-redis
  66. active_defrag_running:0
  67. lazyfree_pending_objects:0
  68. # Persistence
  69. loading:0  # 是否正在加载持久化文件
  70. rdb_changes_since_last_save:0  # 是否正在加载持久化文件
  71. rdb_bgsave_in_progress:0
  72. rdb_last_save_time:1707200299  # 最后一次 RDB 持久化的时间戳
  73. rdb_last_bgsave_status:ok
  74. rdb_last_bgsave_time_sec:0
  75. rdb_current_bgsave_time_sec:-1
  76. rdb_last_cow_size:0
  77. aof_enabled:0  # 是否启用 AOF 持久化
  78. aof_rewrite_in_progress:0
  79. aof_rewrite_scheduled:0
  80. aof_last_rewrite_time_sec:-1
  81. aof_current_rewrite_time_sec:-1
  82. aof_last_bgrewrite_status:ok
  83. aof_last_write_status:ok
  84. aof_last_cow_size:0
  85. # Stats  统计信息,包括连接、命令处理、网络流量等
  86. total_connections_received:131  # 接收的连接总数
  87. total_commands_processed:378897 # 处理的命令总数
  88. instantaneous_ops_per_sec:0
  89. total_net_input_bytes:6442981
  90. total_net_output_bytes:1210414995
  91. instantaneous_input_kbps:0.00
  92. instantaneous_output_kbps:0.00
  93. rejected_connections:0
  94. sync_full:0
  95. sync_partial_ok:0
  96. sync_partial_err:0
  97. expired_keys:58  # 过期的键总数
  98. expired_stale_perc:0.00
  99. expired_time_cap_reached_count:0
  100. evicted_keys:0
  101. keyspace_hits:15292  # 命中键总数
  102. keyspace_misses:1262  # 未命中键总数
  103. pubsub_channels:0
  104. pubsub_patterns:0
  105. latest_fork_usec:23662
  106. migrate_cached_sockets:0
  107. slave_expires_tracked_keys:0
  108. active_defrag_hits:0
  109. active_defrag_misses:0
  110. active_defrag_key_hits:0
  111. active_defrag_key_misses:0
  112. # Replication 关于主从复制的信息
  113. role:master  # 角色,这里是 master(主节点)
  114. connected_slaves:0 # 连接的从节点数量
  115. master_replid:89ae92c82f117813f4ac44fcc520a11b695125a1
  116. master_replid2:0000000000000000000000000000000000000000
  117. master_repl_offset:0
  118. second_repl_offset:-1
  119. repl_backlog_active:0
  120. repl_backlog_size:1048576
  121. repl_backlog_first_byte_offset:0
  122. repl_backlog_histlen:0
  123. # CPU 使用情况
  124. used_cpu_sys:5.687500 # 系统 CPU 使用时间
  125. used_cpu_user:22.531250 # 用户 CPU 使用时间
  126. used_cpu_sys_children:0.000000
  127. used_cpu_user_children:0.000000
  128. # Cluster 集群相关信息
  129. cluster_enabled:0 # 是否启用集群模式
  130. # Keyspace # 数据库键空间相关信息
  131. 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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表