在 Linux 里,backlog 通常出现在两个地方,排查思路不一样:
指 TCP 监听队列(listen backlog)
accept 队列满SYN 被丢弃# 全连接队列(accept queue)
/proc/sys/net/core/somaxconn
# 半连接队列(SYN queue)
/proc/sys/net/ipv4/tcp_max_syn_backlog
ss -lnt
重点看:
Recv-Q Send-Q
示例:
LISTEN 129 128 0.0.0.0:8080
说明:
netstat -s | grep -i listen
或
cat /proc/net/netstat | grep ListenOverflows
ListenOverflows / ListenDrops > 0 → backlog 不够很多程序 backlog 写死:
listen 8080 backlog=8192;ServerSocket(port, backlog)net.Listen 默认受 somaxconn 限制# 增大系统级
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
# 应用显式设置 backlog
如:
top / htop
vmstat 1
r 列:运行队列长度(backlog 表现)cat /proc/loadavg
如果你能告诉我:
我可以给你更精确的排查命令。