【问题标题】:Always use sendfile with nginx on Linux?总是在 Linux 上将 sendfile 与 nginx 一起使用?
【发布时间】:2020-01-23 18:43:31
【问题描述】:

nginx HTTP 服务器有一个directive named sendfile,它可以告诉它使用Linux sendfile() system call 来执行I/O,而不需要复制到中间内存缓冲区。这应该会增加 I/O 速率并减少内存使用。如果你在现代 Linux 系统上运行现代版本的 nginx,它有什么缺点吗?


过去中,该指令可能有问题,例如on VirtualBox VMs,因此我对现代安装的资格。

【问题讨论】:

    标签: linux nginx sendfile


    【解决方案1】:

    您不会使用它来提供大文件,而是使用directio。虽然 NGINX 在这种情况下已经为你禁用了它。

    【讨论】:

      【解决方案2】:

      扩展@DanilaVershinin 的回答:Nginx documentation 推荐它以提高效率,但大文件除外。可能发生的情况是大文件传输可能会长时间阻塞连接。在与上面相同的链接中找到的解决方案是使用sendfile_max_chunk。示例:

      location /mp3 {
          sendfile           on;
          sendfile_max_chunk 1m; # Limits chunks to 1 Megabytes
      }
      

      【讨论】:

        猜你喜欢
        • 2018-03-04
        • 2018-10-21
        • 2020-09-13
        • 2011-07-04
        • 2023-03-04
        • 1970-01-01
        • 2016-12-01
        • 1970-01-01
        • 2019-03-16
        相关资源
        最近更新 更多