温馨提示×

Redis在CentOS上如何优化设置

小樊
32
2025-12-11 12:57:26
栏目: 云计算

Redis 在 CentOS 上的优化设置

一 系统层优化

  • 文件描述符与进程限制
    • /etc/security/limits.conf 增加:
      • redis soft nofile 65535
      • redis hard nofile 65535
    • 在 systemd 服务单元中设置(如 /usr/lib/systemd/system/redis.service/etc/systemd/system/redis.service.d/limits.conf):
      • LimitNOFILE=65535
    • 执行:systemctl daemon-reload && systemctl restart redis
  • 内核网络与端口
    • /etc/sysctl.conf 增加:
      • net.core.somaxconn = 16384
      • net.ipv4.tcp_max_syn_backlog = 16384
      • net.ipv4.ip_local_port_range = 1024 65535
      • vm.overcommit_memory = 1
    • 执行:sysctl -p
  • Transparent Huge Pages(THP)
    • 临时:echo never > /sys/kernel/mm/transparent_hugepage/enabled
    • 永久:在 /etc/rc.local 追加同一行,并赋予执行权限(chmod +x /etc/rc.local
  • 说明
    • 提升 somaxconntcp_max_syn_backlog 有助于应对突发连接与高并发;overcommit_memory=1 可降低 fork 失败风险;禁用 THP 可显著减少 fork 与写时复制带来的延迟波动。

二 Redis 配置优化

  • 核心内存与淘汰
    • 设置最大可用内存(按机器内存与业务缓存比例):maxmemory 4gb
    • 选择淘汰策略(通用场景优先):maxmemory-policy allkeys-lru(或 volatile-lru/allkeys-lfu 视键是否设置过期而定)
  • 持久化策略(按业务取舍)
    • RDB(快照):
      • save 900 1save 300 10save 60 10000
      • dbfilename dump.rdbdir /var/lib/redis
    • AOF(追加日志,推荐与 RDB 同时开启以兼顾性能与可靠性):
      • appendonly yes
      • appendfilename "appendonly.aof"
      • appendfsync everysec(最多丢失约 1 秒数据,性能与可靠性平衡)
      • 自动重写:auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb
  • 网络与连接
    • bind 127.0.0.1(仅本机)或按需绑定内网地址;远程访问务必配合 TLS/密码/防火墙
    • port 6379
    • tcp-backlog 511
    • timeout 300(空闲超时,避免僵尸连接)
    • requirepass your_password(强密码与访问控制)
  • 诊断与可观测性
    • slowlog-log-slower-than 10000(单位:微秒)
    • slowlog-max-len 128
  • 重要提示
    • 同时启用 RDB+AOF 时,重启恢复以 AOF 为准(数据更完整);RDB 适合快速恢复与备份,AOF 提供更高数据安全性。

三 客户端与运维实践

  • 使用连接池与复用连接,避免频繁建连/断连;合理设置超时与重试策略。
  • 批量操作使用 Pipeline 降低往返时延;遍历大键空间用 SCAN 替代 KEYS(避免阻塞)。
  • 控制 大 Key/大 Value热点 Key:拆分大对象、打散热点、压缩存储(权衡 CPU 与内存)。
  • 数据结构选型与过期策略:为场景选择合适结构(如 Hash 存储对象),为会话/临时数据设置 TTL
  • 监控与压测:用 INFO 持续观察命中率、延迟、慢查询;用 redis-benchmark -q -n 100000 -c 50 -P 16 做基线压测并据此迭代参数。

四 高可用与扩展

  • 数据与并发增长时,采用 Redis 集群主从复制 + 哨兵 提升可用性与水平扩展能力;跨机房部署注意网络时延与一致性取舍。

五 快速检查清单

  • limits.conf 与 systemd 的 nofile ≥ 65535 已生效;ulimit -ncat /proc/<redis_pid>/limits 一致。
  • sysctl 参数已写入并 sysctl -p 生效;cat /proc/sys/net/core/somaxconn 与设置一致。
  • THP 已禁用:cat /sys/kernel/mm/transparent_hugepage/enabled 输出为 never
  • Redis 配置已调整并重启:maxmemorymaxmemory-policyappendonly yesappendfsync everysecsave 策略、slowlogrequirepassbindtcp-backlogtimeout
  • 持久化文件与目录权限正确:/var/lib/redis 可写,RDB/AOF 文件定期备份。
  • 远程访问仅在内网开放,配合 防火墙/TLS/ACL;压测与监控到位,慢查询与命中率处于合理区间。

0