sub2api 性能起飞!Redis 优化配置全解析
最近折腾订阅转换服务的朋友可能会遇到一个痛点:节点多、流量大的时候,服务器 CPU 容易跑满,甚至因为内存不足导致服务崩溃。不过,好消息来了!最近社区里针对 sub2api 提交了一个 Redis 的大优化,经过实测,效果非常惊人。
🚀 性能提升显著,CPU 直接“摸鱼”
应用优化配置后的监控截图,CPU 占用率极低
根据原作者的反馈,在应用了最新的优化代码并调整了 Redis 配置后,即便是共享型的订阅转换服务,面对大量并发请求也能轻松应对。从监控截图来看,CPU 占用率极低,完全处于“摸鱼”状态,系统负载非常健康。这意味着我们甚至可以放心地长期开放注册,不用再担心服务器扛不住了。
⚙️ 核心优化点在哪里?
这次优化的核心在于对 Redis 底层配置的精细调优。Redis 是 sub2api 的缓存中枢,配置得当直接决定了服务的吞吐量。下面给出一份经过验证的 Docker Compose 配置模板,大家可以直接拿来用,或者根据自己的服务器规格微调。
🛠️ Redis 性能优化配置实操
关键参数详解配置参考
以下是一份“开箱即用”的配置片段,重点关注其中的 command 部分,这里包含了绝大多数性能优化的关键参数。
redis:
image: redis:8-alpine
restart: unless-stopped
ulimits:
nofile:
soft: 100000
hard: 100000
volumes:
- ./redis_data:/data
command: |
sh -ec '
set --
if [ -n "$${REDISCLI_AUTH:-}" ]; then
set -- --requirepass "$$REDISCLI_AUTH"
fi
exec redis-server \
--dir /data \
--save "" \
--appendonly yes \
--appendfsync everysec \
--auto-aof-rewrite-percentage 100 \
--auto-aof-rewrite-min-size 256mb \
--maxmemory 6gb \
--maxmemory-policy noeviction \
--tcp-backlog 1024 \
--timeout 0 \
--tcp-keepalive 60 \
--slowlog-log-slower-than 10000 \
--slowlog-max-len 256 \
--latency-monitor-threshold 100 \
--loglevel warning \
"$$@"
'
environment:
- TZ=${TZ:-Asia/Shanghai}
- REDISCLI_AUTH=${REDIS_PASSWORD:-}
networks:
- sub2api-network
healthcheck:
test:
- CMD
- redis-cli
- ping
interval: 10s
timeout: 5s
retries: 5
start_period: 5s
📝 关键参数详解(避坑指南)
很多朋友直接复制配置是没问题,但懂原理才能避免踩坑。这里重点解析几个必须注意的参数:
-
--maxmemory 6gb(内存上限) 这是最需要根据自己服务器内存调整的地方。默认设置了 6GB,如果你的机器内存比较小,或者账号数量特别多、分组特别复杂,建议不要低于 4GB。如果设置得太小,Redis 可能会因为内存溢出而报错,导致服务无法读取缓存。 -
--maxmemory-policy noeviction(内存淘汰策略) 这里设置为noeviction,意思是当内存达到上限时,Redis 不会自动删除任何数据键,而是直接返回错误。对于订阅转换这种对数据准确性要求极高的场景,这样配置可以防止缓存数据意外丢失,虽然可能会牺牲一点内存,但换取了稳定性。 -
ulimits: nofile(文件描述符限制) 将软硬限制都设为100000。在并发量大的情况下,Redis 需要处理大量的网络连接,默认的系统限制往往不够用。调高这个参数可以防止“Too many open files”错误,确保高并发下的连接顺畅。 -
持久化策略 (
--save ""与--appendonly yes) 配置中关闭了 RDB 快照(--save ""),开启了 AOF(--appendonly yes)且每秒同步(--appendfsync everysec)。这样做的好处是减少了 RDB 生成时的 CPU 瞬间峰值,同时通过 AOF 保证了数据安全性,非常适合高并发写入场景。
💡 总结
这套配置方案目前已经合并到了 sub2api 的最新版本中。如果你正在使用或者打算搭建自己的订阅转换服务,强烈建议更新代码并应用上述配置。只要服务器内存跟得上,性能提升会非常明显,彻底告别系统负载报警的焦虑。
如果你的服务器配置较低(比如只有 2G 内存),记得务必下调 --maxmemory 的值,并密切观察日志,平衡好性能与资源占用。

评论已关闭