Nginx 降低延迟的一些配置

Jun 17, 2024 • 预计阅读时间 1 分钟

首先需要明确需要低延迟的场景:是否需要频繁通讯,比如 IM 类型、WebSocket 类型、SSL 握手、端口转发以及 Keepalive 类型的连接。

开启 tcp_nodelay

http {
  tcp_nodelay on;
}

stream {
  tcp_nodelay on;
}

tcp_nodelay 可以设定在 http 模块和 stream 模块,只要接收都数据就立即发送出去而不需要等待缓冲区满。

开启 reuseport 和 worker_processes

worker_processes auto;

{
  listen 443 reuseport;
}

开启了 reuseport 之后,多个 worker 进程可以同时监听 443 端口,Nginx 就会保持多个 worker 在运行状态,可以快速接受连接。

开启 TCP Fast Open

打开操作系统的 TFO:

Linux 内核系统:

net.ipv4.tcp_fastopen=3

1:客户端模式;2:服务端模式;3:两者

BSD 系统:

net.inet.tcp.fastopen.client_enable = 1
net.inet.tcp.fastopen.server_enable = 1

Nginx 的 listen 端口后面加上 fastopen

{
  listen 443 ssl fastopen=512;
}

512 还没有完成 3 次握手的最大队列数量

参考:http://nginx.org/en/docs/stream/ngx_stream_core_module.html

Nginx
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

FreeBSD 启用 Rack 作为默认 TCP 栈

FreeBSD 配置 WireGuard