nginx HTTP 服务器有 directive named sendfile
,它可以告诉它使用 Linux sendfile()
system call执行 I/O 操作而不复制到中间内存缓冲区。这应该会提高 I/O 速率并减少内存使用。如果您在带有现代版本 nginx 的现代 Linux 系统上运行,它有什么缺点吗?
在过去该指令可能会出现问题,例如 on VirtualBox VMs ,因此我有资格进行现代安装。
请您参考如下方法:
扩展@DanilaVershinin的答案:Nginx documentation推荐使用它以提高效率(大文件除外)。可能发生的情况是,大文件传输可能会导致连接过长阻塞。解决方案可在与上面相同的链接中找到,它使用 sendfile_max_chunk
。示例:
location /mp3 {
sendfile on;
sendfile_max_chunk 1m; # Limits chunks to 1 Megabytes
}