温馨提示×

如何查看Linux backlog

小樊
49
2026-07-06 23:44:49
栏目: 智能运维

在 Linux 中,“backlog” 可能指 网络连接 backlog系统日志 backlog任务队列 backlog,不同场景查看方式不同。下面按常见场景说明。


一、网络 backlog(最常见)

1️⃣ TCP 连接 backlog(listen backlog)

listen() 调用中等待 accept 的已完成连接队列。

查看当前 backlog 设置

ss -lnt

示例输出:

State      Recv-Q Send-Q Local Address:Port  Peer Address:Port
LISTEN     0      128    *:80               *:*
  • Send-Q(LISTEN 状态):当前 listen backlog 上限(如 128)
  • Recv-Q:当前已完成但未被 accept 的连接数

注意:不同内核版本含义略有差异。

查看系统级最大 backlog

cat /proc/sys/net/core/somaxconn

默认值通常是 1284096

查看半连接队列(SYN backlog)

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

查看 TCP 丢包(backlog 满)

netstat -s | grep -i listen

ss -s

二、查看某个进程的 backlog(推荐)

使用 ss

ss -lntp

可以看到哪个进程监听端口及 backlog 设置。


三、系统日志 backlog(rsyslog / journald)

journald 日志积压

journalctl --disk-usage

查看是否积压:

journalctl --verify

四、任务 / 消息队列 backlog

1️⃣ systemd 任务

systemctl list-jobs

2️⃣ 消息队列(如 RabbitMQ、Kafka)

  • RabbitMQ:
rabbitmqctl list_queues name messages
  • Kafka:
kafka-consumer-groups.sh --bootstrap-server ... --describe

五、磁盘 / IO backlog(不常见但存在)

iostat

iostat -x 1

关注 avgqu-sz(队列长度)。


六、快速判断“backlog 是否满了”

常见信号:

  • 新连接超时
  • accept()
  • netstat -s 中有 listen queue overflow
  • ss -lnt 中 Recv-Q 接近 Send-Q

七、常见优化建议

# 临时调整
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=8192

# 永久生效
vim /etc/sysctl.conf
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192

如果你能说明 具体场景(如:Nginx、Redis、Kafka、Java 服务、SYN 丢包),我可以给你更精确的查看和调优方案。

0