tcp_nodelay

tcp_nodelay 指令禁用 Nagle's algorithm 对 TCP 连接的处理,从而允许低延迟通信。 — NGINX HTTP Core

tcp_nodelay
httpserverlocation
语法tcp_nodelay on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

tcp_nodelay 指令用于 NGINX 配置文件中的 HTTP、server 和 location 块。将其设置为 'on' 时,会禁用 TCP 连接的 Nagle's algorithm,这意味着数据包会立即发送,而无需等待累积更多数据以便一起传输。这可以帮助提高对低延迟要求严格的实时应用的性能,例如在线游戏、VoIP 和流媒体服务。 当 Nagle's algorithm 启用(默认)时,小数据包可能会被延迟,系统会尝试将它们合并为更大的数据包以优化网络使用。这会导致需要即时数据传输的应用出现更高的延迟。通过使用 tcp_nodelay,管理员可以确保数据准备好发送时立即发送,从而以可能增加网络流量为代价来降低延迟。在使用此指令时,必须仔细考虑对网络带宽的影响。 该指令接受一个标志参数;将其设置为 'on' 可启用 TCP_NODELAY,而 'off' 则恢复默认行为。需要注意的是,该指令主要影响性能特性而非功能行为,因此应根据所服务应用的具体需求进行调整。

配置示例

server {
    listen 80;
    location / {
        tcp_nodelay on;
        proxy_pass http://backend;
    }
}

将 tcp_nodelay 设置为 on 会增加网络流量,因为数据包会被立即发送。

在带宽效率比低延迟更重要的应用中请谨慎使用。