在 Debian 里“backlog”通常指 网络连接的半连接/全连接队列(listen backlog),或者有时也指 系统/服务积压的任务(如打印队列、邮件队列、systemd 任务)。下面分情况说明怎么“清理”。
ss -lnt
关注 Recv-Q 和 Send-Q:
Recv-Q:当前已完成连接但未被应用 accept 的数量Send-Q:backlog 上限示例:
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
128 就是当前 backlog 上限。
应用层(如 Nginx / Redis)要自己设置:
listen 80 backlog=1024;
系统层面:
sysctl -w net.core.somaxconn=1024
永久生效:
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf
sysctl -p
如果是因为 应用卡死 导致 backlog 堆积:
systemctl restart nginx
ss -nt state established '( dport = :80 )' | awk 'NR>1 {print $4}' | xargs -r kill
systemctl list-units --state=failed
systemctl reset-failed
lpstat -o
cancel -a
postqueue -p
postsuper -d ALL
如果是“更新积压”:
apt update
apt upgrade
apt autoremove
| 类型 | 清理方式 |
|---|---|
| 网络 backlog | 扩容 somaxconn / 重启服务 |
| systemd | systemctl reset-failed |
| 打印 | cancel -a |
| 邮件 | postsuper -d ALL |
| 软件包 | apt upgrade |
如果你说的 backlog 是某个具体服务(如 Nginx、Kafka、RabbitMQ),告诉我服务名,我可以给更精确的清理方法。