温馨提示×

Linux backlog怎么查看

小樊
51
2026-08-17 08:51:09
栏目: 智能运维

在 Linux 里,“backlog” 这个词不是单一概念,不同场景含义不同。下面按最常见的几种情况给你说明,并附上查看方法。


一、网络连接中的 backlog(最常见)

1️⃣ TCP 连接 backlog(listen backlog)

socket 处于 SYN_RECV / ESTABLISHED 但未 accept 的连接队列长度

查看系统级 backlog 限制

sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog

常见默认值:

  • net.core.somaxconn = 4096
  • net.ipv4.tcp_max_syn_backlog = 8192

查看当前监听端口的 backlog

ss -lnt

示例输出:

LISTEN 0 128 0.0.0.0:80

其中:

  • 128 就是 当前监听 socket 的 backlog
  • somaxconn + 应用代码 listen(fd, backlog) 影响

实际 backlog = min(应用设置, somaxconn)


二、查看 TCP 半连接 / 全连接队列是否溢出(非常重要)

1️⃣ 半连接队列(SYN queue)

netstat -s | grep -i "SYNs"

或:

ss -s

关注:

SYNs to LISTEN sockets dropped

如果有值且持续增长,说明 半连接队列溢出(syn backlog 满)


2️⃣ 全连接队列(Accept queue)

ss -lnt

如果看到:

LISTEN 0 128

但连接很多,仍可能溢出。

更精确方式:

cat /proc/net/sockstat

或:

watch -n1 'ss -lnt | grep 80'

三、查看应用层 backlog(代码层面)

1️⃣ Nginx

nginx -T 2>/dev/null | grep backlog

或:

listen 80 backlog=2048;

2️⃣ Redis

redis-cli CONFIG GET tcp-backlog

3️⃣ Java

jstack pid | grep -i backlog

四、系统 backlog / 队列相关(非网络)

1️⃣ 中断 backlog

cat /proc/interrupts

2️⃣ 磁盘 I/O 队列

iostat -x 1

关注:

avgqu-sz

五、快速判断 backlog 是否出问题的 checklist ✅

现象 检查命令
连接建立慢 ss -lnt
丢连接 netstat -s
半连接多 tcp_max_syn_backlog
应用 accept 慢 应用 backlog 设置

六、一句话总结

Linux 中 backlog 通常指 TCP 连接队列,用 ss -lnt 看当前值,用 netstat -s 判断是否溢出。


如果你能具体说一下:

  • ✅ 网络 / 应用 / 内核 / 哪个服务
  • ✅ 报错信息或现象(连接超时?丢包?)

我可以给你更精准的定位和调优建议

0