温馨提示×

如何清除linux backlog

小樊
46
2026-10-02 11:04:49
栏目: 智能运维

在 Linux 里,“backlog” 通常出现在几个不同场景,清除/处理方式也不一样。先确认你指的是哪种:


一、网络监听 socket 的 backlog(最常见)

指 listen(fd, backlog) 中等待 accept 的连接队列(半连接 / 全连接队列)。

1. 查看 backlog 状态

ss -lnt
# 或
netstat -lnt

关注:

  • Recv-Q:当前已完成但未被 accept 的连接数
  • Send-Q:backlog 上限

半连接队列:

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

2. 清除方式(本质是“消费”而非“删除”)

backlog 不能直接“清空”,只能被应用程序 accept 掉

常见处理:

  • 重启监听服务(如 Nginx / Java / Go 程序)
  • 修复应用 accept 慢的问题
  • 调整内核参数:
# 增大队列
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=65535

如果是 SYN Flood 攻击:

sysctl -w net.ipv4.tcp_syncookies=1

二、systemd / 服务队列 backlog

指服务启动失败或排队中的任务。

查看

systemctl list-jobs

清除卡住的任务

systemctl reset-failed

三、消息队列 / 管道 backlog(如 RabbitMQ、Kafka)

这不是系统级 backlog,而是应用层。

  • RabbitMQ:
rabbitmqctl purge_queue queue_name
  • Kafka:只能消费或删除 topic

四、打印队列 backlog(cups)

lpstat -o
cancel -a

五、你真正想“清”的是什么?

可以告诉我:

  • 是 端口 listen 的 backlog
  • 还是 某个服务卡住
  • 还是看到 连接数异常

我可以直接给你对应命令。

0 踩