温馨提示×

如何通过配置提升centos redis性能

小樊
31
2025-12-09 13:24:27
栏目: 云计算

CentOS 上提升 Redis 性能的配置方案

一 系统层优化

  • 禁用透明大页 THP:THP 会在 fork 与写时复制阶段放大内存页与延迟,建议禁用。临时执行:echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag;永久生效可将同样命令加入 /etc/rc.local 或使用 systemd oneshot 服务在开机时执行。验证:cat /sys/kernel/mm/transparent_hugepage/enabled 应显示 never
  • 内存过量分配:设置 vm.overcommit_memory=1(写入 /etc/sysctl.conf/etc/sysctl.d/*.conf),避免 BGSAVE/BGREWRITEAOF 在低内存时 fork 失败。
  • 文件描述符与连接队列:提高进程可打开文件数与内核连接队列上限,编辑 /etc/security/limits.conf 增加 redis soft/hard nofile 65535,并在 systemd 服务单元中补充 LimitNOFILE=65535;内核参数设置 net.core.somaxconn=65535,必要时提高 net.ipv4.tcp_max_syn_backlog 与本地端口范围。
  • 磁盘与 I/O:优先使用 SSD,为 RDB/AOF 与重写预留充足 IOPS;混合持久化(见下文)在 SSD 上收益更明显。

二 Redis 配置优化

  • 内存与淘汰策略:设置 maxmemory <合理上限>(建议为物理内存的约 70%,预留 20%~30% 给 OS 与其他进程),根据业务选择淘汰策略:allkeys-lru/volatile-lru(通用缓存)、allkeys-lfu/volatile-lfu(热点更集中时更优)、volatile-ttl(按过期时间淘汰)。
  • 持久化策略(兼顾性能与安全):
    • RDB:保留适度快照策略,如 save 900 1save 300 10save 60 10000;开启 rdbcompression yesrdbchecksum yesstop-writes-on-bgsave-error yes
    • AOF:启用 appendonly yesappendfsync everysec(最多丢失 1 秒数据,性能与可靠性折中);按需设置 auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb
    • 混合持久化:Redis 4.0+ 支持、建议 6.0+ 使用,开启 aof-use-rdb-preamble yes,可显著减小 AOF 体积并加速恢复。
  • 网络与并发:设置 tcp-backlog 511(与内核 somaxconn 匹配),按需开启 tcp-keepalive;使用 Redis 6.0+ 的 IO 多线程io-threads 4,通常不超过 CPU 物理核心数)加速网络与部分命令处理(注意:命令执行仍是单线程)。
  • 慢查询与诊断:配置 slowlog-log-slower-than 10000(单位微秒)、slowlog-max-len 128,定期用 SLOWLOG GET 定位瓶颈命令。

三 客户端与架构优化

  • 连接与批处理:客户端使用连接池复用连接;对多命令场景使用 Pipeline 合并往返;避免使用阻塞命令(如 BLPOP/BRPOP 在极端场景会阻塞其他客户端),大数据遍历用 SCAN 替代 KEYS
  • 数据结构与键设计:为海量小对象选用 Hash 等紧凑结构;控制 大 key/大 value,必要时拆分;合理设置 TTL 清理无效数据;热点 key 可通过随机化前缀或本地缓存打散。
  • 扩展与高可用:数据量与并发进一步提升时,采用 Redis 集群进行分片与读写分离,提高吞吐与容量上限。

四 监控与验证

  • 内置监控:使用 INFO persistence 检查 last_bgsave_statuslast_write_status、重写进度;INFO memory 观察 used_memory_rssmem_fragmentation_ratioSLOWLOG GET 定位慢命令。
  • 持久化演练:定期在测试环境演练 RDB/AOF 备份与恢复流程,验证 BGSAVE/BGREWRITEAOF 成功与数据一致性。
  • 生产监控:部署 Prometheus + Redis Exporter,关注 RDB/AOF 失败、重写频繁、AOF 文件过大、RDB 长时间未更新等告警。

五 一键可用的最小改动清单

  • 系统层:禁用 THP;设置 vm.overcommit_memory=1net.core.somaxconn=65535redis 用户 nofile=65535(limits.conf + systemd)。
  • redis.conf:设置 maxmemory 与合适的 maxmemory-policy;RDB 使用 save 900 1 300 10 60 10000;启用 AOF 与混合持久化(appendonly yesappendfsync everysecaof-use-rdb-preamble yes);tcp-backlog 511slowlog-log-slower-than 10000slowlog-max-len 128;Redis 6.0+ 可加 io-threads 4
  • 验证:重启后用 INFO persistenceSLOWLOG GETBGSAVE/BGREWRITEAOF 验证生效与稳定性。

0