在 Linux 中,“清空 backlog”需要明确具体场景,因为 backlog 可能是指网络队列、系统日志、任务队列、管道等。下面是常见几种含义及对应的清空/清理方法。
这是 listen() 中的 backlog:
listen(fd, backlog);
✅ 无法直接“清空”,但可以通过:
查看当前 backlog 状态:
ss -lnt
示例:
ss -lnt
State Recv-Q Send-Q Local Address:Port
LISTEN 0 128 0.0.0.0:80
Recv-Q:当前已完成但未 accept 的连接数Send-Q:listen backlog 最大值✅ 修改 backlog(临时):
sysctl -w net.core.somaxconn=4096
永久:
echo "net.core.somaxconn=4096" >> /etc/sysctl.conf
sysctl -p
查看半连接队列:
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
查看当前 SYN 队列:
ss -s
✅ 清空方式(实际是丢包):
sysctl -w net.ipv4.tcp_syncookies=1
journalctl --vacuum-size=100M
journalctl --vacuum-time=3d
完全清空:
journalctl --rotate
journalctl --vacuum-time=1s
⚠️ 不推荐“物理删除” /var/log/journal/
dmesg -c
-c:打印后 立即清空 内核 ring bufferwhile read -t 0.1 -r line; do : ; done < /path/to/fifo
或:
dd if=fifo of=/dev/null iflag=nonblock
cancel -a
| 服务 | 清空方式 |
|---|---|
| Redis | FLUSHALL |
| Nginx | 重启 / reload |
| Kafka | 删除 topic |
| RabbitMQ | 删除 queue |
sysctl -w net.ipv4.tcp_rmem="4096 87380 6291456"
请补充以下信息我可以精确回答:
如果你愿意,可以直接贴:
ss -lnt
或说明报错信息。