Nginx代理缓存清除过程无法足够快地清理新元素的项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx代理缓存清除过程无法足够快地清理新元素的项目相关的知识,希望对你有一定的参考价值。

我们在对象存储的前面有一个nginx,用于缓存大对象。对象最大为100GB。 Nginx缓存的最大大小设置为约3.5TB。

[当大量对象请求激增,并且磁盘迅速填满时,nginx会遇到磁盘空间不足错误。我期望缓存管理器清除基于LRU的项目并为新元素腾出空间,但这不会发生。

我可以用一个简单的测试用例来重现问题:

配置:

proxy_cache_path / tmp / cache级别= 1:2 keys_zone = cache_one:256m inactive = 2d max_size = 16G use_temp_path = off;

测试:

  1. 运行请求以下载15GB的文件,该文件已正确投放并存储在缓存中。
  2. 运行第二个请求以下载另一个10GB的文件,它将失败,并显示类似以下内容:
2019/10/04 11:49:08 [crit] 20206#20206: *21 pwritev() "/tmp/cache/9/fa/a301d42ca6e5d4188c38ecf56aa3afa9.0000000001" has written only 221184 of 229376 while reading upstream, client: 127.0.0.1, server: eos_cache_filer, request: "GET...
2019/10/04 12:07:29 [crit] 21201#21201: *487 pwrite() "/tmp/cache/9/fa/a301d42ca6e5d4188c38ecf56aa3afa9.0000000002" failed (28: No space left on device) while reading upstream, client: 127.0.0.1, server: eos_cache_filer, request: 

我可以调整一些cache_manager参数以使其工作吗?在这种情况下,有没有办法禁用缓冲-理想情况下下载应该不会失败,它应该只是禁用缓存和缓冲。

答案

在nginx论坛中回答的查询:https://forum.nginx.org/read.php?2,285896

以上是关于Nginx代理缓存清除过程无法足够快地清理新元素的项目的主要内容,如果未能解决你的问题,请参考以下文章

Nginx内容缓存

Nginx代理缓存加速服务器

chrome如何清除缓存 chrome清除缓存方法

angularjs -- 页面模板清除

NGINX proxy 模块如何如何缓存动态页面内容?如何让缓存过期

无法足够快地分配内存?