我有几个服务器运行 nginx 作为较大静态文件的缓存。
由于所需磁盘空间的变化等,我改变了缓存的大小并将其分成多个位置。
不过我有一个问题,如果在“非活动”时间范围内未使用缓存目录中的任何文件,nginx 是否会清除它们?
我基本上想知道如果我所做的更改会导致缓存位置中的文件不会被任何请求更新,我是否必须自己删除它们以回收该空间,或者 nginx 是否会将任何缓存目录下的所有文件视为驱逐候选?
答案1
nginx 文档http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache状态
在 inactive 参数指定的时间内未访问的缓存数据将从缓存中删除,无论其新鲜度如何。默认情况下,inactive 设置为 10 分钟。
和
特殊的“缓存管理器”进程监视由 max_size 参数设置的最大缓存大小。当超过此大小时,它将删除最近最少使用的数据。数据在由 manager_files、manager_threshold 和 manager_sleep 参数 (1.11.5) 配置的迭代中删除。在一次迭代期间,最多删除 manager_files 个项目(默认情况下为 100 个)。一次迭代的持续时间受 manager_threshold 参数限制(默认情况下为 200 毫秒)。在迭代之间,将进行由 manager_sleep 参数配置的暂停(默认情况下为 50 毫秒)。
根据这些信息,nginx 控制使用的磁盘空间。
proxy_cache_path
如果您使用不同的条目定义多个条目keys_zone=name:size
,则每个条目都有自己的声明和不活动时间/文件最大大小的计数。
因此,如果您的keys_zone
cache1
和keys_zone
cache2
每个的最大大小为 10 GB,那么您的缓存总共可以占用 20 GB。