caching - 当接近磁盘限制时,Nginx 缓存管理器会清除文件吗?

标签 caching nginx

我们正计划更新 Nginx 缓存持续时间,我只是在浏览文档以确保当我遇到以下情况时不会出现任何问题:

max_size sets the upper limit of the size of the cache (to 10 gigabytes in this example). It is optional; not specifying a value allows the cache to grow to use all available disk space. When the cache size reaches the limit, a process called the cache manager removes the files that were least recently used to bring the cache size back under the limit.

来源:https://www.nginx.com/blog/nginx-caching-guide/

我们已经安装了一个单独的硬盘,该硬盘将仅用于缓存和 我很想不指定 max_size 属性,以便它只使用可用空间(如上所述),但它没有指定缓存管理器是否会在“limit”是磁盘的隐含大小。

有谁知道缓存管理器是否会处理这个问题,或者我们应该设置 max_size (HDD 的大小)只是为了安全起见?

最佳答案

Nginx 来源显示文件缓存管理器是一个小 function由缓存管理器进程调用。它checks如果当前缓存大小大于 max_size,如果大于,则尝试从内部队列和磁盘中删除最后一个缓存节点。除非您在配置文件中重新定义它,否则 max_size 只是 set具有较大的平台相关常量 value .

所以看起来缓存管理器并没有做任何花哨的事情,比如尝试确定磁盘大小。它只是使用一个大的常量值,并让您担心后果。

因此,如果您不显式设置 max_size,您最终可能会得到大量 errors以及行为不当的缓存。

另请注意,缓存管理器位于单独的进程中,它可能无法及时注意到缓存大小超出限制。因此,明智的做法是将 max_size 设置为比实际 HDD 大小至少小 100 Mb 的值。

关于caching - 当接近磁盘限制时,Nginx 缓存管理器会清除文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35461039/

相关文章:

php - CakePHP 提供与用户代理有关的缓存 Controller 操作

java - JodaTime 年表缓存

android - 将 Retrofit 实例保存在内存中是一种好习惯吗?

java - Spring缓存与reflect方法

javascript - 使用 sc-server 代理 HTTPS 请求

c# - .NET 7 创建自定义输出缓存策略

docker - 添加让我们使用 docker 在 nginx 上加密

spring - nginx 'interfering' 缓存响应?

Nginx:获取proxy_pass使用的上游URI

php - $_POST 在 nginx 上是空的