![nginx 是否使用“deferred”作为 listen 指令的默认值?](https://linux22.com/image/1093069/nginx%20%E6%98%AF%E5%90%A6%E4%BD%BF%E7%94%A8%E2%80%9Cdeferred%E2%80%9D%E4%BD%9C%E4%B8%BA%20listen%20%E6%8C%87%E4%BB%A4%E7%9A%84%E9%BB%98%E8%AE%A4%E5%80%BC%EF%BC%9F.png)
许多站点建议将“deferred”与 nginx 的 listen 指令一起使用。这在 Ubuntu 安装中是否有必要,或者默认情况下启用“deferred”时“listen 80”是否足够?
listen 80 default deferred; # for Linux
答案1
deferred
在 Ubuntu 上默认未启用,没有默认启用它的补丁。
以下是我尝试去理解该选项的作用。
参考自http://wiki.nginx.org/HttpCoreModule#listen:
accept(2)
deferred——表示在 Linux 上借助选项使用延期TCP_DEFER_ACCEPT
是的,它指的是手册页accept
,第 2 节 - 系统调用(内核提供的函数)。不幸的是,我在该手册页中找不到有关其效果的任何信息,因此我开始深入研究源代码(apt-get source nginx
)。
该选项在 中启用nginx-0.8.54/src/http/ngx_http_core_module.c:3534
。如果deffered accept
不支持,您将在启动时收到一条错误消息:
此平台不支持延迟接受,因此被忽略
此时我停止了进一步的搜索。deferred
如果无法禁用,则在 nginx 中默认启用它没有任何意义。