温馨提示×

linux backlog在哪设置

小樊
41
2026-09-11 08:29:44
栏目: 智能运维

在 Linux 中,“backlog” 通常指 监听套接字(listen socket)的等待队列长度,常见场景有:


1. 应用程序中设置(最常见)

TCP / Socket 编程(listen()

backlog 是在 服务端程序调用 listen(sockfd, backlog) 时设置的:

listen(sockfd, 128);
  • backlog 表示 已完成连接(ESTABLISHED)但未 accept 的最大排队数
  • 实际生效值 = min(应用设置, /proc/sys/net/core/somaxconn)

2. 系统级限制(内核参数)

/proc/sys/net/core/somaxconn

这是 backlog 的上限

查看:

cat /proc/sys/net/core/somaxconn

临时修改:

sysctl -w net.core.somaxconn=1024

永久修改(/etc/sysctl.conf):

net.core.somaxconn=1024

然后执行:

sysctl -p

3. 半连接队列(SYN Queue)

/proc/sys/net/ipv4/tcp_max_syn_backlog

控制 SYN_RECV 状态(半连接) 的队列长度

查看:

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

修改:

sysctl -w net.ipv4.tcp_max_syn_backlog=8192

4. Nginx 中的 backlog

listen 指令中设置:

listen 80 backlog=1024;

5. 其他服务示例

  • Redis
    tcp-backlog 511
    
  • MySQL
    back_log=1024
    

总结对照表

类型 参数 / 位置
应用 backlog listen(fd, backlog)
系统上限 net.core.somaxconn
SYN 队列 net.ipv4.tcp_max_syn_backlog
Web 服务 Nginx / Redis / MySQL 配置

如果你能说明 具体场景(如 Nginx、Java、C、Docker、高并发连接),我可以给更精确的建议。

0