温馨提示×

linux backlog配置在哪

小樊
42
2026-10-08 07:29:30
栏目: 智能运维

在 Linux 中,backlog 常见于两个地方:TCP 监听队列(accept queue) 和 内核网络参数。下面分情况说明“配置在哪”。


一、应用层 listen() 的 backlog(最常见)

1. 代码中指定(用户态)

backlog 是在 应用程序调用 listen(sockfd, backlog) 时设置的。

例如:

listen(sockfd, 128);
  • 这是应用层 backlog
  • 实际生效值会被内核参数限制(见下)

常见服务配置位置:

  • Nginx
    listen 80 backlog=1024;
    
  • Redis
    tcp-backlog 511
    
  • HAProxy / Envoy / 自定义程序 → 看对应配置文件或源码

二、内核参数(限制 backlog 上限)

Linux 内核有两个关键参数:

1. net.core.somaxconn

控制 accept 队列最大长度

查看:

cat /proc/sys/net/core/somaxconn

修改(临时):

sysctl -w net.core.somaxconn=1024

永久生效:

# /etc/sysctl.conf
net.core.somaxconn=1024

然后:

sysctl -p

2. net.ipv4.tcp_max_syn_backlog

控制 SYN 队列(半连接)长度

查看:

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

修改:

sysctl -w net.ipv4.tcp_max_syn_backlog=8192

三、backlog 实际生效规则(很重要)

实际监听队列长度 =
min(listen backlog, net.core.somaxconn)

例如:

  • listen(sock, 512)
  • somaxconn = 128 → 实际为 128

四、如何确认当前 backlog

查看监听队列

ss -lnt

输出示例:

State  Recv-Q Send-Q Local Address:Port
LISTEN 0      128    *:80
  • Send-Q 就是当前 backlog 上限

五、总结

配置项 位置
应用 backlog listen() / Nginx / Redis 配置
上限 /proc/sys/net/core/somaxconn
SYN 队列 /proc/sys/net/ipv4/tcp_max_syn_backlog

如果你说的是 某一个具体服务(Nginx / Redis / Kafka / 自研程序),可以告诉我,我可以直接给你对应配置位置。

0 踩