1

我正在运行 Nginx 服务器为用户提供视频内容。这个 nginx 服务器从上游服务器中挑选内容,缓存它,也为用户服务。所有未来的请求都从此缓存中提供。我为此预留了 500GB 的缓存空间。当缓存已满时,如果缓存文件夹在硬盘上,nginx 缓存管理器可以根据我的 proxy_cache 指令删除旧的、未使用的文件。当我将此缓存文件夹挂载到 RAM (tmpfs) 上时,nginx 无法删除旧文件。我收到一条错误消息,提示“28:设备上没有剩余空间”。我在 RAM 和硬盘上都检查了缓存文件夹的权限。它具有相同的权限。

proxy_cache_path    /cache/12054 keys_zone=a12054:100m levels=1:2 max_size=500g inactive=7d;

如果我从 RAM 中卸载它,它会再次开始正常工作。

4

1 回答 1

2

你的内存太少了。您需要 500 GB 的虚拟 RAM(物理 RAM + 交换空间)才能使该配置在 tmpfs 中工作。Nginx 不会尝试清除文件,直到它们过期或您已达到max_size. 从手册

max_size特殊的“缓存管理器”进程监控由参数设置的最大缓存大小。当超过这个大小时,它会删除最近最少使用的数据。

通过运行确认您的 tmpfs 分区有多大df -h

您可能根本不需要 tmpfs。如果您运行的是现代操作系统,则所有空闲 RAM 都应自动用作磁盘缓存。只需将文件写入磁盘。无论如何,它们迟早必须被写入,因此直接编写它们而不是等待它们被换出可能更有效。

于 2016-08-16T07:29:14.320 回答