温馨提示×

Linux backlog监控指标有哪些

小樊
45
2025-12-09 05:41:59
栏目: 智能运维

Linux backlog监控指标清单

一 核心队列与容量指标

  • 监听套接字队列使用情况:当前待 accept 的连接数(Recv-Q)与应用程序设置的最大 backlog(Send-Q),按端口/进程维度采集,反映服务端的瞬时排队压力。常用采集方式:ss -tnl 或 ss -tnlp。该指标直接体现“已完成三次握手、等待应用 accept”的队列是否逼近或打满。
  • SYN 队列(半连接)规模:处于 SYN_RECV 状态的连接数,反映握手未完成阶段的排队与潜在 SYN 洪泛压力。常用采集方式:netstat -an | grep -c SYN_RECV(或按端口聚合)。
  • 内核全局队列上限:包括 net.core.somaxconn(监听队列上限)、net.ipv4.tcp_max_syn_backlog(SYN 队列上限)、net.core.netdev_max_backlog(网卡接收软中断队列上限)。这些决定队列“天花板”,需与业务并发预期匹配。
  • 队列溢出/丢弃类计数:如 TCPBacklogDrop(因监听队列满被丢弃)、以及可能的 InCsumErrors/OutRsts 等异常计数,用于发现队列饱和与异常重置。常用采集方式:netstat -s | grep -i backlog / grep -i drop / grep -i rst。

二 关联指标用于排障与容量规划

  • 连接总量与状态分布:已建立连接数(如 CurrEstab)、各状态连接数(ESTABLISHED、TIME_WAIT、FIN_WAIT 等),用于判断连接风暴与回收是否正常。可用:ss -s、netstat -an 或 SNMP/TCP-MIB。
  • 文件句柄与端口资源:已用/最大文件句柄数(如 /proc/sys/fs/file-nr)、可用本地端口范围(net.ipv4.ip_local_port_range),用于识别“句柄/端口耗尽”导致的间接排队与失败。
  • 系统负载与处理能力:1/5/15 分钟负载(uptime/w)、CPU/内存/IO(top/vmstat/iostat),用于判断 backlog 增长是否由处理能力不足引起。
  • 网络层抓包与异常:对关键端口进行 tcpdump 抓包,核对是否存在大量 SYN、重传、RST 等异常,辅助定位是网络问题还是队列瓶颈。

三 常用采集命令与示例

  • 按端口查看监听队列与上限:ss -tnl | grep :80(Recv-Q 为当前排队,Send-Q 为 backlog 上限);ss -tnlp 可带进程信息。
  • 统计半开连接数:netstat -an | grep -c SYN_RECV(可按端口过滤后统计)。
  • 查看内核队列上限:sysctl net.core.somaxconn;sysctl net.ipv4.tcp_max_syn_backlog;sysctl net.core.netdev_max_backlog。
  • 溢出与错误计数:netstat -s | egrep ‘TCPBacklogDrop|InCsumErrors|OutRsts’。
  • 连接规模与状态:ss -s;或 cat /proc/net/snmp | grep -E ‘CurrEstab|TcpExt:’(配合 watch 做趋势)。

四 阈值与告警建议

  • 监听队列使用率:建议以 Recv-Q/Send-Q 的比值设置预警,如超过 70% 提示关注、90% 严重告警;同时结合应用并发与处理能力评估是否需要调优或扩容。
  • SYN 队列异常:当 SYN_RECV 在短时间内激增或持续增长,且伴随 TCPBacklogDrop/OutRsts 上升,优先排查 SYN 洪泛、半开连接攻击或后端 accept 能力不足。
  • 资源瓶颈联动:若出现 CurrEstab 接近文件句柄上限、或负载持续高于 CPU 核数且队列高企,需联动扩容(句柄/端口/实例/CPU)与优化(更快 accept、连接保活/回收策略)。

0