redis运维:监控指标体系与性能问题分析
前言
redis 用起来简单,出问题时排查难。这篇从监控指标体系和性能问题分析两个维度整理运维要点,指标是日常巡检的眼睛,排查手段是出事时的手术刀。
一、监控指标体系
redis 的监控指标可以分为五大类。
1. 性能指标(Performance)
| Name | Description |
|---|---|
| latency | Redis 响应一个请求的时间 |
| instantaneous_ops_per_sec | 平均每秒处理请求总数 |
| hit rate (calculated) | 缓存命中率(计算出来的) |
2. 内存指标(Memory)
| Name | Description |
|---|---|
| used_memory | 已使用内存 |
| mem_fragmentation_ratio | 内存碎片率 |
| evicted_keys | 由于最大内存限制被移除的 key 的数量 |
| blocked_clients | 由于 BLPOP、BRPOP 或 BRPOPLPUPUSH 而被阻塞的客户端 |
3. 基本活动指标(Basic activity)
| Name | Description |
|---|---|
| connected_clients | 客户端连接数 |
| connected_slaves | slave 数量 |
| master_last_io_seconds_ago | 最近一次主从交互之后的秒数 |
| keyspace | 数据库中的 key 值总数 |
4. 持久性指标(Persistence)
| Name | Description |
|---|---|
| rdb_last_save_time | 最后一次持久化保存磁盘的时间戳 |
| rdb_changes_since_last_save | 自最后一次持久化以来数据库的更改数 |
5. 错误指标(Error)
| Name | Description |
|---|---|
| rejected_connections | 由于达到 maxclient 限制而被拒绝的连接数 |
| keyspace_misses | key 值查找失败(没有命中)次数 |
| master_link_down_since_seconds | 主从断开的持续时间(以秒为单位) |
二、监控方式与工具
常用工具:redis-benchmark、redis-stat、redis-faina、redislive、redis-cli、monitor、slowlog。
慢日志相关配置:
|
|
slowlog 子命令:get 获取慢查询日志、len 获取慢查询日志条目数、reset 重置慢查询日志。
info 命令(可一次性获取所有信息,也可按块获取):
- server:服务器运行的环境参数
- clients:客户端相关信息
- memory:服务器运行内存统计数据
- persistence:持久化信息
- stats:通用统计数据
- replication:主从复制相关信息
- cpu:CPU 使用情况
- cluster:集群信息
- keyspace:键值对统计数量信息
终端使用:
|
|
交互式使用:
|
|
三、常用监控命令实战
性能监控(每秒操作数):
|
|
redis-benchmark 的基准测试输出(各命令延迟分布与吞吐):
内存监控:
|
|
|
|
阻塞客户端与淘汰 key:
|
|
四、性能问题分析三板斧
1. 测试 redis 响应延迟
为了避免业务服务器到 Redis 服务器之间的网络延迟,需要直接在 Redis 服务器上测试实例的响应延迟。以下命令测试实例 60 秒内的最大响应延迟:
|
|
这 60 秒内的最大响应延迟为 72 微秒(0.072 毫秒)。
还可以查看一段时间内 Redis 的最小、最大、平均访问延迟:
|
|
每间隔 1 秒采样 Redis 的平均操作耗时,上面结果分布在 0.08 ~ 0.13 毫秒之间。
2. 查看慢日志
查看慢日志前先设置阈值。例如设置慢日志阈值为 5 毫秒、保留最近 500 条:
|
|
之后所有耗时超过 5 毫秒的命令都会被记录,查询最近记录的慢日志:
|
|
通过慢日志可以知道在什么时间点、执行了哪些命令比较耗时。
3. bigkey 扫描
Redis 提供了扫描 bigkey 的命令,扫描出一个实例中 bigkey 的分布情况,输出结果按类型维度展示:
|
|
从输出可以清晰地看到每种数据类型中占用最大内存 / 拥有最多元素的 key 是哪一个,以及各类型在整个实例中的占比和平均大小。
注意:
--bigkeys只能给出每种类型最大的 key,生产环境定位具体业务大 key 时,还需要结合业务 key 命名规则分析,必要时用MEMORY USAGE <key>精确度量。
总结
日常巡检盯五类指标(延迟/QPS/内存/主从/错误),出现性能问题时按「延迟测试 → 慢日志 → bigkey」的顺序推进,基本能覆盖 redis 大部分性能场景。
- 原文作者:Anttu
- 原文链接:https://anTtutu.github.io/post/2022-03-05-redis-ops/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。