温馨提示×

linux backlog在哪里设置

小樊
31
2026-09-17 13:44:52
栏目: 智能运维

在 Linux 中,backlog 通常指 listen() 的等待连接队列长度,常见于网络编程和服务配置。不同场景设置位置不同,下面分情况说明。


一、应用程序中设置(最常见)

1. 网络编程(C / Python / Java 等)

backlog 是在 调用 listen() 时指定的

C 示例

listen(sockfd, backlog);

Python 示例

server.listen(backlog)

注意:
实际生效的 backlog = min(应用设置的backlog, /proc/sys/net/core/somaxconn)


二、系统内核参数(影响最大上限)

2. 全局最大 backlog(somaxconn)

cat /proc/sys/net/core/somaxconn

临时修改

sysctl -w net.core.somaxconn=1024

永久修改

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

然后执行:

sysctl -p

3. TCP 半连接队列(SYN backlog)

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

修改

sysctl -w net.ipv4.tcp_max_syn_backlog=8192

三、常见服务中的 backlog 设置

Nginx

listen 80 backlog=1024;

Redis

tcp-backlog 1024

MySQL

[mysqld]
back_log = 1024

Systemd socket(较少见)

[Socket]
ListenBacklog=128

四、查看当前队列状态(排障用)

ss -lnt
# 或
netstat -lnt

关注:

  • Recv-Q:当前积压连接数
  • Send-Q:backlog 上限

总结

场景 设置位置
程序代码 listen(fd, backlog)
系统上限 net.core.somaxconn
SYN 队列 net.ipv4.tcp_max_syn_backlog
Nginx listen ... backlog=
服务配置 对应服务配置文件

如果你是指 某一个具体服务或语言 的 backlog,可以告诉我,我给你精确配置示例。

0