温馨提示×

如何优化Ubuntu Redis的性能

小樊
31
2025-12-10 19:47:04
栏目: 云计算

Ubuntu 上优化 Redis 性能的实用清单

一 系统层优化

  • 使用最新稳定版 Redis,及时获得性能修复与安全改进。
  • 选择更快的存储与网络:优先 SSD/NVMe,并确保网络带宽与延迟满足业务峰值。
  • 调整内核网络参数以支撑高并发连接:提高 net.core.somaxconn(如 4096 或更高),并相应设置 Redis 的 tcp-backlog(常见 511)。
  • 开启并保持足够的内存余量,尽量避免 swap,以减少抖动与停顿。
  • 客户端侧使用连接池复用连接,降低握手与销毁开销。

二 Redis 配置优化

  • 内存与淘汰策略
    • 设置 maxmemory(如物理内存的约70%,视业务而定)。
    • 选择 maxmemory-policy:通用缓存推荐 allkeys-lru;若键有过期时间可选 volatile-lru
  • 持久化策略
    • 需要高吞吐时以 RDB 为主;需要更高数据安全时开启 AOF,并将 appendfsync 设为 everysec 平衡性能与安全。
    • 合理设置 RDB 快照条件(如:save 900 1、save 300 10、save 60 10000),避免频繁快照带来抖动。
  • 网络与连接
    • 绑定内网地址(如 bind 10.x.x.x),开启 protected-mode;必要时仅开放白名单 IP。
    • 设置 timeout 回收空闲连接;提高 tcp-keepalive(如 300 秒)保持长连接活性。
    • 提升 maxclients,并配置合理的 client-output-buffer-limit(特别是对 replica、pubsub)。
  • 慢查询与内部结构
    • 开启慢查询日志:slowlog-log-slower-than 10000(10ms),slowlog-max-len 128
    • 启用惰性释放:lazyfree-lazy-eviction / lazyfree-lazy-expire / lazyfree-lazy-server-del / replica-lazy-flush,降低大 key 删除与大对象淘汰的阻塞。
  • 事件循环与基线
    • 适度提高 hz(如 10→100)以更及时处理后台任务(需结合 CPU 与负载测试)。
    • 基线模板与关键参数位置:Ubuntu 常见配置路径 /etc/redis/redis.conf

三 监控与压测闭环

  • 实时监控:使用 redis-cli --stat 观察瞬时 QPS、内存与命中率;结合 INFO 输出关键指标(如 used_memory、evicted_keys、instantaneous_ops_per_sec、rejected_connections)。
  • 可视化与告警:接入 Prometheus + Grafana 建立面板与阈值告警,持续跟踪延迟、命中率、连接数、持久化耗时等。
  • 基准测试:用 redis-benchmark 验证调优成效,例如:
    • 测试 GET 吞吐:redis-benchmark -t get -n 100000 -c 100 -q
    • 逐步增加并发客户端数,观察 P95/P99 延迟拐点与错误率,以定位瓶颈。

四 架构与扩展

  • 读写分离与复制:部署 主从复制,让从节点承担读流量,减轻主节点压力。
  • 高可用:引入 Redis Sentinel 实现故障自动切换与通知。
  • 水平扩展:数据量大或并发极高时采用 Redis Cluster 分片,分散热点与容量瓶颈。
  • 安全与访问控制:为远程访问配置强密码(requirepass)、限制来源 IP(如 ufw 仅放行内网)、必要时重命名危险命令(如 FLUSHALL/FLUSHDB/SHUTDOWN)。

五 快速检查清单与示例命令

  • 配置路径与生效
    • 编辑:sudo vim /etc/redis/redis.conf
    • 重启与验证:sudo systemctl restart redis && sudo systemctl status redis
  • 防火墙放行(仅内网示例)
    • sudo ufw allow from 10.0.0.0/8 to any port 6379
  • 基线压测与监控
    • 压测:redis-benchmark -t get,set -n 200000 -c 200 -q
    • 实时观察:redis-cli --statINFO
  • 关键参数示例(按业务调整)
    • maxmemory 2gb
    • maxmemory-policy allkeys-lru
    • appendonly yes;appendfsync everysec
    • tcp-backlog 511;tcp-keepalive 300
    • slowlog-log-slower-than 10000;slowlog-max-len 128

0