温馨提示×

debian backlog怎么排查

小樊
43
2026-09-01 01:40:07
栏目: 智能运维

在 Debian(或其他 Linux)系统里,“backlog” 通常出现在网络(如 TCP listen backlog)或系统/服务队列积压场景。下面按常见场景给你一套排查思路。


一、TCP / 网络 backlog 排查(最常见)

1. 查看监听队列是否溢出

ss -lnt

关注:

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

示例:

LISTEN 0 128 0.0.0.0:80

如果 Recv-Q 经常接近 Send-Q,说明 backlog 满了。

查看溢出次数:

netstat -s | grep -i listen

cat /proc/net/netstat | grep ListenOverflows
  • ListenOverflows 增加 → backlog 不够或处理太慢

2. 调整内核 backlog 参数

sysctl -a | grep backlog

常见参数:

net.core.somaxconn
net.ipv4.tcp_max_syn_backlog

临时调整:

sysctl -w net.core.somaxconn=1024
sysctl -w net.ipv4.tcp_max_syn_backlog=2048

永久生效:

/etc/sysctl.conf
net.core.somaxconn=1024
net.ipv4.tcp_max_syn_backlog=2048

然后:

sysctl -p

⚠️ 注意:应用层 listen(fd, backlog) 也受 somaxconn 限制。


二、服务级 backlog(systemd / 应用)

1. systemd socket backlog

如果是 socket-activated 服务:

systemctl cat your-service.socket

查看:

ListenBacklog=

2. 应用自身 backlog

常见:

  • Nginx:listen 80 backlog=1024;
  • Redis:tcp-backlog
  • 自建服务:listen(sockfd, N)

应用不调大,内核调了也没用。


三、任务 / 队列 backlog(非网络)

1. 打印 / 任务队列

lpq
mailq

2. systemd 任务积压

systemctl list-jobs

四、性能层面排查(backlog 的根因)

backlog 高通常不是“参数小”,而是:

  • CPU 打满
  • 磁盘 IO 阻塞
  • 锁竞争
  • 后端(DB / 接口)慢

排查工具:

top
htop
iostat -x 1
vmstat 1

五、快速定位 checklist

✅ 是否是网络?

  • ss -lnt + ListenOverflows

✅ 是否内核限制?

  • somaxconn / tcp_max_syn_backlog

✅ 是否应用限制?

  • 应用 listen backlog 配置

✅ 是否后端慢?

  • CPU / IO / 依赖服务

如果你能说明 具体是哪种 backlog(TCP?Nginx?Redis?打印?systemd?),我可以给你更精确的命令和修复方案。

0