温馨提示×

linux backlog在哪配置

小樊
46
2026-09-23 16:38:58
栏目: 智能运维

在 Linux 中,backlog 出现在多个地方,含义和配置位置不同。常见主要有以下几类:


1. TCP 监听队列 backlog(listen() 的 backlog)

1.1 应用程序层配置

由程序在调用 listen(sockfd, backlog) 时指定,例如:

  • Nginx:listen 80 backlog=512;
  • Redis:tcp-backlog 511
  • 自己写的程序:listen(fd, 1024)

⚠️ 注意:
实际生效的是:

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

1.2 内核参数限制(somaxconn)

# 查看
cat /proc/sys/net/core/somaxconn

# 临时修改
sysctl -w net.core.somaxconn=1024

# 永久修改
vim /etc/sysctl.conf
net.core.somaxconn = 1024
sysctl -p

2. 半连接队列(SYN backlog)

用于 TCP 三次握手未完成连接:

# 查看
cat /proc/sys/net/ipv4/tcp_max_syn_backlog

# 修改
sysctl -w net.ipv4.tcp_max_syn_backlog=8192

同样可写入 /etc/sysctl.conf。


3. 网络接收队列 backlog(netdev_max_backlog)

指网卡接收到内核协议栈的队列长度:

cat /proc/sys/net/core/netdev_max_backlog
sysctl -w net.core.netdev_max_backlog=2000

4. 各服务自身的 backlog 配置示例

服务 配置项 文件
Nginx backlog= nginx.conf
Redis tcp-backlog redis.conf
HAProxy backlog haproxy.cfg
Java server.tomcat.accept-count Spring 配置

5. 排查命令

# 查看连接队列溢出
netstat -s | grep -i listen

# 查看全连接队列长度
ss -lnt

总结

  • 程序 listen backlog → 应用配置
  • 最大限制 → net.core.somaxconn
  • SYN 队列 → tcp_max_syn_backlog

如果你指的是某个具体服务(Nginx / Redis / 自研程序等),可以告诉我,我给你精确配置方式。

0 踩