Nginx是大型架构核心,下面我详解Nginx性能@mikechen
一、文件描述符限制:决定并发连接上限

Nginx 本质上是一个高并发网络服务器,而每一个客户端连接、每一个打开的文件,都会占用文件描述符。
如果系统的文件描述符上限过低,Nginx 即使具备更强的处理能力,也无法接纳更多连接。
因此,首先要优化的是 ulimit 以及相关内核参数,
如:
fs.file-max
ulimit -n
worker_rlimit_nofile
其中,fs.file-max 决定系统级别可分配的文件句柄总数;
ulimit -n 决定单进程可打开的最大文件数;
而 worker_rlimit_nofile 则是 Nginx 工作进程层面的限制。
若这些参数配置不足,常见问题包括“too many open files”报错、连接被拒绝、请求处理失败等。
二、TCP 连接队列参数:避免请求在入口处堆积

Nginx 作为反向代理和负载均衡入口时,连接首先要进入 TCP 队列。
如果队列太短,在流量突增时,新的连接可能无法及时被接受,从而造成丢包或连接失败。
此时需要重点关注以下参数:
net.core.somaxconn
net.ipv4.tcp_max_syn_backlog
net.core.netdev_max_backlog
如果这些参数设置偏低,在大流量、高并发或突发访问情况下。
就容易出现连接建立慢、握手超时、请求丢失等现象。
合理增大这些队列,可以显著提升入口抗压能力,使 Nginx 在流量峰值时依然保持稳定。
三、TCP 连接复用与超时参数:提升连接效率

高性能 Nginx 不仅要“接得住”,还要“处理快”。
TCP 参数中的连接复用、超时回收机制,会直接影响系统资源利用率。
相关重点包括:
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_fin_timeout
net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_probes
在短连接较多的场景中,TIME_WAIT 状态会大量积累,占用端口和系统资源。
通过适当缩短超时时间、启用连接复用,可以减少无效连接堆积,提升端口回收效率。
同时,合理配置 keepalive 参数,有助于及时识别失效连接,避免资源长期占用。
四、网络缓冲区参数:减少丢包与处理阻塞

网络缓冲区是数据包进入系统后的“中转站”。
当流量较大时,若缓冲区过小,数据包容易来不及处理而丢失,进而引发重传和性能下降。
因此,需要优化以下参数:
net.core.rmem_max
net.core.wmem_max
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
这些参数分别控制接收和发送缓冲区的最大值以及 TCP 自动调节范围。
更大的缓冲区可以提升高带宽、长距离网络环境下的吞吐能力,减少传输中的阻塞和丢包。