首页/系统/Linux 内核与性能调优速查/net.core.somaxconn 全连接队列上限
sysctl 内核参数72 条

net.core.somaxconn 全连接队列上限

限制 listen 套接字 accept 队列的长度上限,实际生效值为 min(应用 backlog, somaxconn);高并发短连接服务的常见瓶颈点。

参数net.core.somaxconn
作用已完成三次握手的连接排队上限
默认值现代内核常见 4096(旧内核为 128)

查看与修改

查看与修改
sysctl net.core.somaxconn
sysctl -w net.core.somaxconn=8192
# 应用侧还需 backlog 不少于该值,如 nginx: listen 80 backlog=8192;

验证队列

验证队列
ss -lnt | head        # Listen 行的 Send-Q 即 backlog 上限
nstat -az TcpExtListenOverflows TcpExtListenDrops
改大 somaxconn 后必须重启监听进程重新 listen 才生效;只改内核参数不调应用 backlog 通常没有效果。

易错点

  • 全连接队列满且应用 accept 不及时,表现为偶发连接超时或神秘丢包;先看 nstat 的 ListenOverflows 再动参数
  • 云厂商负载均衡常直接向 RS 建连,backlog 溢出会放大为首包超时,调整前用 ss -lnt 核对实际队列长度

数据来源与参考

  • Linux 内核 Documentation/admin-guide/sysctl/net.rst
  • man 7 tcp(listen backlog 语义)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌