首页主机资讯centos backlog怎么监控

centos backlog怎么监控

时间2025-11-20 20:04:11发布访客分类主机资讯浏览1211
导读:CentOS Backlog 监控与告警实战 一 关键概念与判定依据 backlog在 Linux 中指两个队列: 半连接队列(SYN 队列):存放尚未完成三次握手的连接,受内核参数 net.ipv4.tcp_max_syn_backl...

CentOS Backlog 监控与告警实战

一 关键概念与判定依据

  • backlog在 Linux 中指两个队列:
    • 半连接队列(SYN 队列):存放尚未完成三次握手的连接,受内核参数 net.ipv4.tcp_max_syn_backlog 等影响。
    • 全连接队列(Accept 队列):存放已完成三次握手、等待应用 accept() 的连接。其实际大小并非应用设置的 backlog 值本身,而是取 min(应用 backlog, net.core.somaxconn) 的较小者,并受内核实现细节影响。队列溢出时,内核会按 tcp_synack_retries 进行 SYN+ACK 重传,溢出行为受 tcp_abort_on_overflow 影响。监控时应同时关注这两类队列与溢出迹象。

二 命令行快速查看

  • 查看系统级队列上限与当前监听套接字的队列使用情况:
    • 系统最大全连接队列上限:cat /proc/sys/net/core/somaxconn
    • 半连接队列上限:cat /proc/sys/net/ipv4/tcp_max_syn_backlog
    • 监听套接字队列与当前排队连接数:ss -lnt | egrep ‘(:80|:443|:< 你的端口> )’
      • 关注输出中的 Recv-Q(当前排队字节数,近似全连接队列当前长度)与 Send-Q(该监听套接字的最大队列长度,即应用 backlog 与 somaxconn 的较小者)。
  • 查看 TCP 统计与溢出迹象:
    • 总体统计:netstat -s 或 ss -s
    • 溢出与重传相关计数:cat /proc/net/snmp | egrep ‘TcpExt:.*(ListenOverflows|TCPBacklogDrop|TCPRetransSegs|TCPSynRetrans)’
      • ListenOverflows / TCPBacklogDrop 增长,通常意味着全连接或半连接队列出现溢出。
  • 抓包侧证(定位是否为连接洪泛或握手异常):tcpdump -ni any ‘tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn’
    以上命令覆盖了队列上限、当前使用、溢出计数与流量侧证,适合日常巡检与问题定位。

三 可视化与告警方案

  • 轻量脚本轮询(适合无监控系统场景)
    • 思路:用 ss 获取 Recv-Q/Send-Q,用 /proc/net/snmp 获取 ListenOverflows/TCPBacklogDrop,当超过阈值时发邮件或企业微信/钉钉 Webhook。
    • 伪代码要点:
      • 阈值:fullconn_warn=800;listen_overflow_warn=10(按业务与端口调整)
      • 采集:ss -lnt | grep :80;cat /proc/net/snmp | egrep ‘TcpExt:.*(ListenOverflows|TCPBacklogDrop)’
      • 判断:Recv-Q 接近 Send-Q 或持续增长;ListenOverflows/TCPBacklogDrop 环比上升
      • 动作:告警并附带时间戳、端口、Recv-Q/Send-Q、溢出计数
  • Prometheus + Exporter + Alertmanager(适合生产)
    • 采集:使用 node_exporter 的 textfile 收集器或 Blackbox Exporter 探测端口可用性;应用/内核指标可用 Prometheus Node Exporter 自定义脚本eBPF/BPFtrace 导出队列与溢出计数。
    • 建议指标命名:
      • node_tcp_backlog_current{ port=“80”} (由 ss/脚本采集)
      • node_tcp_backlog_max{ port=“80”} (由 ss 的 Send-Q 或内核参数推导)
      • node_tcp_listen_overflow_total{ port=“80”} (由 /proc/net/snmp 的 ListenOverflows/TCPBacklogDrop 累计)
    • 告警规则示例:
      • 规则:node_tcp_backlog_current / node_tcp_backlog_max > 0.8 持续 1m 触发 warning
      • 规则:increase(node_tcp_listen_overflow_total[5m]) > 0 触发 warning(溢出计数增长即告警)
    • 通知:通过 Alertmanager 路由到邮件、企业微信、钉钉或 Slack。
  • 传统监控平台
    • Zabbix/Nagios 可通过 UserParameter 执行 ss/脚本采集,配置触发器在阈值或溢出增长时告警。

四 阈值建议与优化方向

  • 阈值与基线
    • Send-Q(应用 backlog 与 somaxconn 的较小者)为上限,设置使用率告警:如 ≥70% 预警、≥90% 严重。
    • ListenOverflows/TCPBacklogDrop 设置“持续增长即告警”,避免偶发抖动。
  • 关联内核参数
    • 合理提升 net.core.somaxconn(如 2048/4096),并同步调整应用 backlog,使其与 somaxconn 匹配;全连接队列实际大小取二者较小值。
    • 在遭遇连接洪泛或 SYN 风暴时,结合业务调优 net.ipv4.tcp_max_syn_backlogtcp_synack_retriestcp_abort_on_overflow,并配合清洗/限速策略。
    • 修改 somaxconn 示例:echo 2048 > /proc/sys/net/core/somaxconn;持久化到 /etc/sysctl.conf:net.core.somaxconn = 2048 后执行 sysctl -p。
  • 应用层优化
    • 提高服务并发 accept 能力(多 worker、异步 I/O)、缩短 accept 循环时延,避免队列长期占满。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos backlog怎么监控
本文地址: https://pptw.com/jishu/752383.html
centos backlog能删除吗 centos backlog怎么产生

游客 回复需填写必要信息