温馨提示×

怎样清空linux backlog

小樊
43
2026-09-23 16:37:59
栏目: 智能运维

在 Linux 中,“backlog” 可能指几种不同的东西,常见有:

  1. TCP 监听队列 backlog(listen() 的 backlog)
  2. 系统 socket 接收/发送缓冲区积压
  3. 某个服务/进程的待处理任务队列(如打印队列、消息队列)
  4. 内核或应用层的连接积压(如 SYN 队列、accept 队列)

下面按常见场景说明如何“清空”或“释放” backlog。


一、TCP / 网络 backlog(listen backlog)

1. 查看 listen backlog

ss -lnt
# 或
netstat -lnt

示例输出中:

Recv-Q Send-Q Local Address:Port
0      128    0.0.0.0:80
  • Send-Q 对该监听 socket 表示 backlog 上限
  • Recv-Q 表示当前 已完成连接但未 accept 的连接数

2. 清空 accept 队列 backlog(已建立但未 accept)

无法直接“清空”,只能被进程 accept 或关闭

方法:

  • 重启服务(最常用)
systemctl restart nginx
  • 或让服务进程正常 accept 连接

3. 清空 SYN 队列(半连接队列)

# 查看
cat /proc/net/netstat | grep TcpExt

清空方式:

  • 临时丢弃所有 SYN(慎用):
iptables -A INPUT -p tcp --syn -j DROP
# 一段时间后删除
iptables -D INPUT -p tcp --syn -j DROP
  • 或直接重启网络/服务

二、Socket 接收/发送缓冲区积压

查看

ss -tn

Recv-Q / Send-Q 表示缓冲区积压

清空方法

  • 杀死或重启对应进程
kill -9 <pid>
  • 或重启服务
systemctl restart <service>

三、打印队列 backlog(CUPS)

查看

lpstat -o

清空

cancel -a

或

lprm -

四、systemd 任务 / 日志 backlog

清空 journald 日志

journalctl --vacuum-size=100M

清空 failed 服务状态

systemctl reset-failed

五、消息队列 / 管道 backlog

System V 消息队列

ipcs -q
ipcrm -q <msqid>

六、通用“清空 backlog”的最直接方式

重启相关服务或进程

systemctl restart <service>

或

kill -9 <pid>

如果你能说明是 哪种 backlog(例如:Nginx、Redis、Kafka、TCP 连接、打印队列等),我可以给你更精确的操作命令。

0 踩