温馨提示×

linux backlog参数在哪设

小樊
44
2026-09-08 10:27:21
栏目: 智能运维

在 Linux 里,backlog 不是一个“全局参数”,而是跟具体场景绑定的,常见有下面几种情况:


1. TCP 监听 socket 的 backlog(listen() 的 backlog)

这是最常见的 backlog。

设置位置

由应用程序代码决定,不是系统文件直接改的:

listen(sockfd, backlog);

例如:

  • Nginx:listen 80 backlog=1024;
  • Redis:tcp-backlog 511
  • 自己写的 C/Java/Go 程序:在 listen() 时传参

内核会“截断”

实际生效值是:

min(应用设置的 backlog, /proc/sys/net/core/somaxconn)

2. 系统级最大 backlog:somaxconn

控制所有监听 socket 的最大 accept 队列长度

查看

cat /proc/sys/net/core/somaxconn

临时修改

sysctl -w net.core.somaxconn=4096

永久修改

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

然后:

sysctl -p

3. 半连接队列(SYN backlog)

对应 SYN_RECV 状态

相关参数

net.ipv4.tcp_max_syn_backlog

查看 / 修改

cat /proc/sys/net/ipv4/tcp_max_syn_backlog
sysctl -w net.ipv4.tcp_max_syn_backlog=8192

4. 总结一句话

类型 在哪设
应用 backlog 程序代码 / 服务配置
全连接队列上限 net.core.somaxconn
半连接队列 net.ipv4.tcp_max_syn_backlog

如果你说的是某个具体服务(Nginx / Redis / 自己程序),告诉我,我可以直接给你配置示例。

0