Linux 与 Redis 性能优化实操指南
一 系统层面关键优化
echo 1 > /proc/sys/vm/overcommit_memory 或写入 /etc/sysctl.conf 持久化。该设置可显著降低 fork 失败与阻塞风险。echo never > /sys/kernel/mm/transparent_hugepage/enabled,并加入开机自启(如 /etc/rc.local)。修改后需重启 Redis 生效。sysctl -w vm.swappiness=10。ulimit -Sn 30000;同时校准 Redis 的 maxclients(需低于系统限制并预留文件描述符开销)。sysctl -w net.core.somaxconn=1024、sysctl -w net.ipv4.tcp_max_syn_backlog=2048、sysctl -w net.ipv4.tcp_keepalive_time=60。二 Redis 配置优化
maxmemory 12gb、maxmemory-policy volatile-lru。client-output-buffer-limit normal 0 0 0、client-output-buffer-limit slave 256mb 64mb 60、client-output-buffer-limit pubsub 32mb 8mb 60。save 900 1、save 300 100、save 60 10000、rdbcompression no、rdbchecksum no(生产慎用关闭校验)。appendonly yes、appendfsync everysec、auto-aof-rewrite-enabled yes、auto-aof-rewrite-percentage 100、auto-aof-rewrite-min-size 64mb。三 持久化与复制的权衡
INFO stats 的 latest_fork_usec 观测。优化手段包括控制实例内存(如单实例不超过 10GB)、降低 fork 频率(放宽 AOF 重写阈值、避免频繁全量复制)、优先物理机或高效虚拟化。四 线程与网络 I/O 优化
五 上线前的压测与验证
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000、redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100、redis-benchmark -t set,lpush -n 100000 -q、redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"。INFO stats 的 latest_fork_usec、instantaneous_ops_per_sec、keyspace_hits/misses,以及 INFO persistence 的 aof_delayed_fsync 等指标,结合业务延迟与命中率持续迭代参数。