manager_sleep 控制 cache manager 每轮清理后的休眠时长(毫秒),用于调节清理节奏:过短致 I/O 密集,过长致磁盘超限;它配合 manager_files 实现分批扫描与系统喘息,需结合 max_size、inactive 等参数协同调优。

manager_sleep 控制 cache manager 进程每次执行完一轮缓存清理后休眠多久,单位是毫秒。它不决定“是否清理”,而是调节清理节奏——太短容易密集 I/O,太长又可能让磁盘超限迟迟得不到释放。
manager_sleep 的作用机制
cache manager 是一个后台常驻进程,周期性扫描缓存目录,按 LRU 策略淘汰超出 max_size 或超过 inactive 时间的文件。它不是一口气扫完整个目录,而是一次处理有限数量(由 manager_files 控制),然后暂停 manager_sleep 指定的时间,再继续下一轮。
这个“停顿”本质是给系统留出喘息空间:避免高并发写入+高频扫描同时压垮磁盘或 CPU。
常见取值与适用场景
- 默认值 200ms:适合中小流量、SSD 存储、缓存总量在几 GB 到几十 GB 的常规部署
- 调小到 50–100ms:适用于缓存命中率低、淘汰压力大、且磁盘 I/O 能力强(如 NVMe)的场景,可加快空间回收速度
- 调大到 500ms–2s:适用于机械硬盘、或与业务请求共享同一块存储的环境,能显著降低后台清理对前端响应的影响
- 不建议设为 0:会导致 manager 持续高强度扫描,可能引发 I/O 饱和,反而拖慢整体性能
配合其他参数一起看才有效
单独调 manager_sleep 效果有限,必须结合:
- manager_files:每次清理多少文件。若设为 200,sleep=100ms,相当于每秒最多清理 2000 个文件;若 sleep=500ms,则每秒仅 400 个
- max_size 和实际缓存增长速率:如果缓存每分钟新增 500MB,但 manager 清理节奏太慢,就可能长期超限
- inactive 设置:如果 inactive 时间过长(如 24h),即使 sleep 很小,manager 也未必有足够待淘汰项可清
观察效果的关键指标
调优后别只看配置,要验证实际行为:
- 用 iostat -x 1 观察 %util 和 await,确认磁盘压力是否下降
- 检查 /var/log/nginx/error.log 中是否有 “cache manager process … exited on signal 9” 类报错(可能是内存或资源争抢)
- 通过 du -sh /path/to/cache 定期采样,看缓存目录大小是否稳定在 max_size 附近波动,而非持续上涨


















