【问题标题】:Nginx Serving static large fileNginx 服务静态大文件
【发布时间】:2020-07-11 15:10:10
【问题描述】:

我有一个bigFile.avi,大小为 800MB,位于http://example.com/bigFile.avi

当我使用此链接从浏览器下载bigFile.avi 时,我的 nginx 服务器在下载会话期间跳转到 100% CPU 负载,没有静态内容也没有 PHP(普通 PHP 脚本使用 1-3% CPU)。

这对服务器来说正常吗?处理大文件会消耗这么多 CPU 吗?

我什至尝试在 nginx 配置中关闭 gzip,但没有太大区别。

【问题讨论】:

    标签: file nginx config performance


    【解决方案1】:

    由于 nginx 可以在将大文件发送到客户端之前将它们写入磁盘,因此如果站点要提供大型静态文件,通常最好禁用此缓存,例如:

    location / {
        proxy_max_temp_file_size 0;
    }
    

    【讨论】:

    • 尝试下载大文件 (> 2GB) 时,进度总是停在 50% 左右。这解决了它!
    【解决方案2】:

    看看这些文章

    我承认其中一些超出了我的能力范围。但简而言之,如果您要发送大 (>4MB) 文件,他们建议禁用 sendfile、启用 aio 并增加输出缓冲区。我带走的是大多数默认服务器配置假设将发送许多小文件,而不是少数或许多大文件。这两种不同的场景可能需要一些非常不同的配置才能有效地工作。

    【讨论】:

      猜你喜欢
      • 2016-04-05
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多