全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-12 10 分钟 ✍️ juanwangdev

Redis集群性能调优与监控

Redis集群性能调优需要从内存、网络、CPU多维度入手,配合完善的监控体系保障集群稳定运行。

内存优化

内存分配策略

Bash
# 设置内存上限
maxmemory 4gb

# 内存回收策略
maxmemory-policy allkeys-lru

# 禁用THP(Transparent Huge Pages)
echo never > /sys/kernel/mm/transparent_hugepage/enabled

对象编码优化

Bash
# hash对象压缩阈值
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# list压缩
list-max-ziplist-size -2
list-compress-depth 0

# set优化
set-max-intset-entries 512

# zset优化
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

内存碎片率 mem_fragmentation_ratio 应控制在 1.0-1.5 之间。

网络调优

连接参数优化

Bash
# 最大连接数
maxclients 10000

# 连接超时
timeout 300

# TCP backlog
tcp-backlog 511

# TCP keepalive
tcp-keepalive 300

内核网络参数

Bash
# 增加系统文件描述符限制
ulimit -n 65535

# 内核网络参数调优
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
sysctl -w net.ipv4.tcp_tw_reuse=1

集群参数调优

集群通信优化

Bash
# 集群节点超时时间(毫秒)
cluster-node-timeout 15000

# 集群节点连接超时
cluster-announce-timeout 3000

# 集群总线带宽限制
cluster-announce-bus-port 0

# 集群从节点有效因子
cluster-replica-validity-factor 10

迁移性能优化

Bash
# 迁移超时
cluster-migration-barrier 1

# 迁移批量大小
cluster-allow-reads-when-down no

延迟监控

延迟监测命令

Bash
# 开启延迟监控
CONFIG SET latency-monitor-threshold 100

# 查看延迟事件
LATENCY LATEST

# 查看延迟历史
LATENCY HISTORY command

# 查看延迟图
LATENCY GRAPH command

关键延迟指标

指标说明警戒值
latency_percentiles_usec命令延迟百分位P99 > 10ms
instantaneous_ops_per_sec即时OPS突降注意
total_commands_processed总命令数监控趋势
expired_keys过期key数量大量过期

慢查询分析

慢查询配置

Bash
# 慢查询阈值(微秒)
slowlog-log-slower-than 10000

# 慢查询记录条数
slowlog-max-len 128

慢查询查看

Bash
# 获取慢查询日志
SLOWLOG GET 10

# 慢查询长度
SLOWLOG LEN

# 重置慢查询
SLOWLOG RESET

INFO命令关键指标

内存相关

YAML
used_memory: 已使用内存
used_memory_rss: 系统分配内存
used_memory_peak: 内存峰值
mem_fragmentation_ratio: 内存碎片率

性能相关

YAML
instantaneous_ops_per_sec: 每秒操作数
total_commands_processed: 总处理命令数
rejected_connections: 拒绝连接数
expired_keys: 过期key数量
evicted_keys: 驱逐key数量

集群相关

Bash
cluster_state: 集群状态(ok/fail)
cluster_slots_assigned: 已分配槽位
cluster_slots_ok: 正常槽位
cluster_slots_pfail: 可能故障槽位
cluster_slots_fail: 故障槽位
cluster_known_nodes: 已知节点数
cluster_size: 集群规模

监控工具

Redis Exporter + Prometheus

text
# prometheus.yml
scrape_configs:
  - job_name: 'redis'
    static_configs:
      - targets: ['redis-exporter:9121']

关键告警规则

text
groups:
  - name: redis_alerts
    rules:
      - alert: RedisMemoryHigh
        expr: redis_memory_used_bytes / redis_memory_max_bytes > 0.8
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Redis内存使用超过80%"

      - alert: RedisClusterDown
        expr: redis_cluster_state == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Redis集群故障"

性能基准测试

使用redis-benchmark

text
# 基准测试
redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 100000

# 测试特定命令
redis-benchmark -t set,get -n 100000 -c 50

# 测试集群
redis-benchmark -h 127.0.0.1 -p 7000 --cluster -n 100000

生产环境应定期进行基准测试,建立性能基线。

要点总结

  • 内存碎片率控制在1.0-1.5,合理设置maxmemory-policy
  • 调整内核网络参数,增大连接队列和文件描述符限制
  • cluster-node-timeout影响故障检测灵敏度,根据网络环境调整
  • 开启latency-monitor监控延迟异常
  • 使用Redis Exporter + Prometheus构建完整监控体系
  • 定期运行redis-benchmark建立性能基线

📝 发现内容有误?点击此处直接编辑

← 上一篇 Redis集群客户端路由与Smart Client
下一篇 → Redis集群故障检测与自动故障转移
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库