在 Debian(以及一般的 Linux)里,backlog 这个词通常出现在几个不同场景里,监控方式也不同。下面我按常见情况给你说明,你可以对号入座。
listen(sockfd, backlog) 中的 backlog,表示:
accept() 的连接队列长度上限ss -lnt
关注:
Recv-Q:当前已完成连接、未被 accept 的数量Send-Q:backlog 上限(内核实际值)示例:
LISTEN 0 128 0.0.0.0:80
说明 backlog 是 128
netstat -s | grep -i listen
或
cat /proc/net/netstat | grep ListenOverflows
关键指标:
ListenOverflows:backlog 溢出次数ListenDrops:被丢弃的连接应用层(示例):
listen(sockfd, 1024);
内核参数:
sysctl -w net.core.somaxconn=1024
永久生效:
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf
sysctl -p
如果你是问 systemd 的 backlog(任务堆积):
systemctl status xxx
systemctl list-jobs
journalctl -u xxx --since "10 min ago"
uptime
top
vmstat 1
关注:
r:运行队列长度(backlog)b:阻塞进程数指标:
node_netstat_Tcp_ListenOverflowsnode_netstat_Tcp_ListenDropsnode_netstat_Tcp_ListenOverflows > 0
可以告诉我:
我可以直接给你对应的监控脚本或告警规则。