在 Debian(及其他 Linux 发行版)语境里,“backlog 堆积”通常指网络监听队列(listen backlog)积压,也可能指系统任务/服务队列堆积。下面分常见场景说明原因和对策。
listen(fd, backlog)accept)accept 太慢 → 队列满 → 新连接被丢弃或超时listen(sockfd, 128);
cat /proc/sys/net/core/somaxconn
Debian 默认通常:
somaxconn = 128
即使应用设 backlog=1024,也会被截断
netstat -ant | grep SYN_RECV | wc -l
# 查看连接状态
ss -lnt
# 查看全连接队列溢出
netstat -s | grep -i listen
# 溢出计数
cat /proc/net/netstat | grep ListenOverflows
示例:
ListenOverflows: 12345
ListenDrops: 12345
→ 明确 backlog 丢包
# /etc/sysctl.conf
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
sysctl -p
listen backlogaccept,慢逻辑异步处理systemctl status 卡住systemd 队列满systemctl list-jobs
systemd-analyze blame
| 场景 | 说明 |
|---|---|
| apt / dpkg | 未完成的包安装 |
| 打印队列 | CUPS backlog |
| 消息队列 | RabbitMQ / Kafka |
ListenOverflows 是否增长?somaxconn 是否过小?如果你能补充:
我可以给出更精确的参数和配置示例。