当前位置: 首页 > news >正文

Redis 线上问题排查简版手册

Redis 线上问题排查完整手册

目录

  1. 问题分类与快速定位
  2. 性能问题排查
  3. 内存问题诊断
  4. 连接与网络问题
  5. 常用排查命令
  6. 监控指标分析
  7. 应急处理方案
  8. 性能优化建议

问题分类与快速定位

1. 性能问题

现象:

  • 响应时间增加,P99延迟上升
  • QPS下降,吞吐量不足
  • CPU使用率异常(过高或过低)

快速检查命令:

# 检查基本信息
redis-cli info stats
redis-cli info replication
redis-cli info memory# 检查慢查询
redis-cli slowlog get 10# 实时监控命令执行
redis-cli monitor

2. 内存问题

现象:

  • 内存使用率持续上升
  • 出现OOM错误
  • 键过期不及时

快速检查:

# 内存使用详情
redis-cli info memory# 检查大键
redis-cli --bigkeys# 内存使用分析
redis-cli memory usage <key>
redis-cli memory stats

3. 连接问题

现象:

  • 连接超时或拒绝
  • 连接数异常
  • 客户端频繁重连

快速检查:

# 连接信息
redis-cli info clients
redis-cli client list# 网络连接检查
netstat -an | grep :6379
ss -tulpn | grep :6379

性能问题排查

1. 慢查询分析

# 设置慢查询阈值(微秒)
CONFIG SET slowlog-log-slower-than 10000# 设置慢查询记录数量
CONFIG SET slowlog-max-len 1000# 查看慢查询
SLOWLOG GET 20# 查看慢查询统计
SLOWLOG LEN# 清空慢查询日志
SLOWLOG RESET

2. 热点键分析

# 实时监控(生产环境谨慎使用)
redis-cli monitor | head -n 1000# 使用采样监控
redis-cli --latency-history -i 1# 检查键的访问频率(Redis 4.0+)
redis-cli --hotkeys

3. 延迟诊断

# 延迟测试
redis-cli --latency
redis-cli --latency-history
redis-cli --latency-dist# 内在延迟测试
redis-cli --intrinsic-latency 60# 网络延迟测试
ping <redis-server-ip>

4. QPS和吞吐量监控

# 实时统计信息
redis-cli --stat# 每秒命令执行数
redis-cli info stats | grep instantaneous_ops_per_sec# 网络吞吐量
redis-cli info stats | grep instantaneous_input_kbps
redis-cli info stats | grep instantaneous_output_kbps

内存问题诊断

1. 内存使用分析

# 详细内存信息
redis-cli info memory# 关键指标说明:
# used_memory: 实际使用内存
# used_memory_rss: 系统分配内存
# used_memory_peak: 历史最大内存使用
# mem_fragmentation_ratio: 内存碎片率

2. 大键检测

# 扫描大键(会影响性能)
redis-cli --bigkeys# 指定数据库扫描
redis-cli -n 1 --bigkeys# 采样扫描(降低影响)
redis-cli --bigkeys -i 0.01

3. 键空间分析

# 键的内存使用
redis-cli memory usage <key># 获取键类型和TTL
redis-cli type <key>
redis-cli ttl <key># 扫描键模式
redis-cli --scan --pattern "prefix:*"

4. 内存碎片处理

# 检查碎片率
redis-cli info memory | grep mem_fragmentation_ratio# 主动碎片整理(Redis 4.0+)
CONFIG SET activedefrag yes
CONFIG SET active-defrag-ignore-bytes 100mb
CONFIG SET active-defrag-threshold-lower 10# 手动触发碎片整理
MEMORY PURGE

连接与网络问题

1. 连接数监控

# 当前连接信息
redis-cli info clients# 客户端列表
redis-cli client list# 按类型统计连接
redis-cli client list | awk '{print $3}' | sort | uniq -c# 关闭空闲连接
redis-cli client kill type normal idle 300

2. 连接池配置检查

# 最大连接数
CONFIG GET maxclients# 超时设置
CONFIG GET timeout# TCP保活设置
CONFIG GET tcp-keepalive

3. 网络问题诊断

# 网络连通性测试
telnet <redis-ip> 6379
nc -zv <redis-ip> 6379# 防火墙检查
iptables -L | grep 6379# 端口监听状态
netstat -tlnp | grep 6379
ss -tlnp | grep 6379

4. SSL/TLS问题

# SSL连接测试
redis-cli --tls --cert ./client.crt --key ./client.key --cacert ./ca.crt# 证书验证
openssl s_client -connect <redis-ip>:6380 -cert client.crt -key client.key

常用排查命令

1. 信息查询命令

# 服务器信息
INFO server
INFO clients
INFO memory
INFO persistence
INFO stats
INFO replication
INFO cpu
INFO cluster
INFO keyspace# 配置查询
CONFIG GET "*"
CONFIG GET maxmemory
CONFIG GET save

2. 实时监控命令

# 命令监控
MONITOR# 发布订阅监控
PSUBSCRIBE __keyevent@0__:*# 客户端监控
CLIENT LIST
CLIENT TRACKING ON

3. 调试命令

# 对象调试
DEBUG OBJECT <key># 段错误调试
DEBUG SEGFAULT# 内存报告
MEMORY DOCTOR# 延迟监控
LATENCY MONITOR
LATENCY LATEST
LATENCY HISTORY <event>

监控指标分析

1. 核心性能指标

# QPS相关
instantaneous_ops_per_sec        # 每秒操作数
total_commands_processed         # 总命令数# 延迟相关
latency_percentiles_usec         # 延迟百分位数
avg_ttl                          # 平均TTL# 内存相关
used_memory                      # 使用内存
used_memory_rss                  # RSS内存
mem_fragmentation_ratio          # 碎片率# 连接相关
connected_clients                # 连接数
blocked_clients                  # 阻塞客户端数

2. 关键阈值设置

# 内存告警阈值
used_memory > maxmemory * 0.8
mem_fragmentation_ratio > 1.5# 性能告警阈值
instantaneous_ops_per_sec < 1000
slowlog_len > 100# 连接告警阈值
connected_clients > maxclients * 0.8
blocked_clients > 10

应急处理方案

1. 内存不足处理

# 立即释放内存
FLUSHDB                          # 清空当前数据库
FLUSHALL                         # 清空所有数据库# 删除大键
UNLINK <big-key>                 # 异步删除# 调整内存策略
CONFIG SET maxmemory-policy allkeys-lru
CONFIG SET maxmemory <new-limit>

2. 性能急剧下降处理

# 禁用危险命令
CONFIG SET rename-command-keys ""
CONFIG SET rename-command-flushall ""# 限制慢查询
CONFIG SET slowlog-log-slower-than 1000# 重启服务(最后手段)
sudo systemctl restart redis

3. 连接问题处理

# 清理僵尸连接
CLIENT KILL TYPE normal IDLE 300# 增加连接限制
CONFIG SET maxclients 20000# 启用连接池
CONFIG SET tcp-keepalive 60

性能优化建议

1. 配置优化

# 内存优化
maxmemory-policy allkeys-lru     # 内存淘汰策略
hash-max-ziplist-entries 512     # 哈希压缩阈值
list-max-ziplist-size -2         # 列表压缩设置# 持久化优化
save ""                          # 禁用RDB(如果不需要)
appendonly yes                   # 启用AOF
appendfsync everysec            # AOF同步策略# 网络优化
tcp-keepalive 60                 # TCP保活
timeout 300                      # 客户端超时

2. 运维优化

# 操作系统优化
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 1 > /proc/sys/vm/overcommit_memory
echo 511 > /proc/sys/net/core/somaxconn# 文件描述符限制
ulimit -n 65535# 内存分配
echo vm.swappiness=1 >> /etc/sysctl.conf

3. 应用层优化

# 连接池配置
max_connections=20               # 最大连接数
min_idle_connections=5           # 最小空闲连接
max_idle_time=300               # 最大空闲时间# 命令优化
# 使用PIPELINE批量操作
# 避免KEYS命令,使用SCAN替代
# 合理设置TTL,避免内存泄漏
# 使用合适的数据结构

故障排查流程图

  1. 问题发现 → 监控告警或用户反馈
  2. 初步判断 → 查看基本信息和日志
  3. 定位问题 → 使用相应诊断命令
  4. 分析原因 → 结合监控数据分析
  5. 制定方案 → 选择合适的解决方案
  6. 执行处理 → 谨慎执行修复操作
  7. 验证效果 → 确认问题已解决
  8. 总结优化 → 防止问题再次发生

联系方式与备注

使用说明:

  • 生产环境执行命令前务必谨慎评估影响
  • MONITOR、KEYS等命令会影响性能,请在业务低峰期使用
  • 重要操作前建议先备份数据
  • 配置修改建议先在测试环境验证

更新时间: 2024年最新版本
适用版本: Redis 5.0+ (部分命令需要更高版本)


文章转载自:

http://c1QOsu32.jqrhz.cn
http://rCYpt9MX.jqrhz.cn
http://KpZwTOOd.jqrhz.cn
http://4FsTCiuc.jqrhz.cn
http://3rSel2Lc.jqrhz.cn
http://BVUhQT4l.jqrhz.cn
http://zqo5LUhC.jqrhz.cn
http://IM16UsAk.jqrhz.cn
http://s4yV9zlr.jqrhz.cn
http://gFSEeQtH.jqrhz.cn
http://DDZqSFCS.jqrhz.cn
http://qwHqdH7c.jqrhz.cn
http://Af6uXTeb.jqrhz.cn
http://RIx7vlp6.jqrhz.cn
http://NNBiDCmX.jqrhz.cn
http://o8njT9JZ.jqrhz.cn
http://Z9H5qdnP.jqrhz.cn
http://nD7ceAJO.jqrhz.cn
http://psCngYwK.jqrhz.cn
http://rMxt5iaZ.jqrhz.cn
http://0RYOJo6O.jqrhz.cn
http://IEWKY0cG.jqrhz.cn
http://fuDBrNeC.jqrhz.cn
http://745qNs59.jqrhz.cn
http://XWkMM3Q5.jqrhz.cn
http://KOpmvshx.jqrhz.cn
http://z4vEtQWE.jqrhz.cn
http://m8VmnGxo.jqrhz.cn
http://J6AcikO3.jqrhz.cn
http://brwTmiTt.jqrhz.cn
http://www.dtcms.com/a/382531.html

相关文章:

  • python学习之基本库/第三方库的认识和学习
  • 深度解析电动汽车绝缘材料的性能测试标准与解决方案
  • 通讯工程师专业实务-数据库、软件开发、云计算
  • 栈(Java)
  • StarRocks and Doris
  • Python进阶教程:随机数、正则表达式与异常处理
  • 【面试题】大模型高频面试题
  • UE5日期减日期
  • Redis Stream 命令
  • 微信小程序开发教程(十)
  • 弧形导轨如何提升新能源汽车的能效和续航里程?
  • 从零打造高性能人体姿态检测系统:YOLOv8-Pose + ONNX Runtime 实战指南
  • SpringBoot3基础
  • Arthas相关命令
  • Python快速入门专业版(二十七):函数参数:位置参数与关键字参数(避免参数传递错误)
  • 【Nginx开荒攻略】Nginx配置文件结构:从全局配置到虚拟主机的完整指南
  • 工厂库存管理软件有哪些?
  • Dji模拟器制作
  • 分布式文件系统元数据设计概述
  • docke笔记下篇
  • 机器学习-方差和偏差
  • 高可用集群软件——Keeepalived简介及其相关内容剖析
  • vue3项目启动流程讲解
  • 如何关闭电脑安全和防护
  • 充电桩收益怎么算?
  • Case-Based Reasoning用于RAG
  • 如何通过标签和分类提升知识复用效率
  • 小红书笔记评论一键获取,实时查看作品数据
  • Day22 用C语言编译应用程序
  • 在RHEL9上使用通用二进制包部署mysql教程