提问人:Raedwald 提问时间:9/24/2019 最后编辑:Raedwald 更新时间:12/26/2021 访问量:5222
总是在 Linux 上将 sendfile 与 nginx 一起使用?
Always use sendfile with nginx on Linux?
问:
nginx HTTP 服务器有一个名为 sendfile 的指令,它可以告诉它使用 Linux sendfile()
系统调用来执行 I/O,而无需复制到中间内存缓冲区。这应该会提高 I/O 速率并减少内存使用。如果你在现代 Linux 系统上运行,带有现代版本的 nginx,它有什么缺点吗?
在过去,该指令可能存在问题,例如在 VirtualBox VM 上,因此我对现代安装具有资格。
答:
2赞
Danila Vershinin
9/24/2019
#1
您不会使用它来提供大文件,而是使用 directio。尽管在这种情况下,NGINX 已经为您禁用了它。
3赞
Hunter Kohler
12/26/2021
#2
扩展一下@DanilaVershinin的答案:Nginx 文档建议它以提高效率,但大文件除外。可能发生的情况是,大型文件传输可能会阻止长时间的连接。该解决方案,在与上面相同的链接中找到,它使用 .例:sendfile_max_chunk
location /mp3 {
sendfile on;
sendfile_max_chunk 1m; # Limits chunks to 1 Megabytes
}
评论