0

0

Linux网络性能监测方法_关键指标解析【教程】

舞姬之光

舞姬之光

发布时间:2026-01-05 12:09:32

|

921人浏览过

|

来源于php中文网

原创

Linux网络性能问题核心是时延高、重传多、吞吐低,需通过ss -i、netstat -s、tcpretrans、dropwatch及ethtool -S等工具分层定位TCP重传、丢包位置、驱动级丢包和应用层队列瓶颈。

linux网络性能监测方法_关键指标解析【教程】

Linux 网络性能问题通常不是“连不上”,而是“时延高、重传多、吞吐上不去”——直接看 ifconfigip addr 没用,得盯住内核网络真实行为。

怎么看 TCP 重传和连接异常?用 ss -inetstat -s

ss -i 能实时显示每个 socket 的重传计数、RTT、拥塞窗口等,比 netstat 更轻量且准确;netstat -s 则汇总了全系统 TCP 层统计,重点看这几行:

  • TCPRetransSegs:已重传的 TCP 段数,持续增长说明链路丢包或接收端处理不过来
  • TCPTimeouts:超时重传次数,若远高于 TCPRetransSegs,可能是 RTO 设置过激或 RTT 波动极大
  • TCPSpuriousRtx:虚假重传(非丢包触发),常见于时间戳未开启或接收端延迟 ACK 过久

运行 netstat -s | grep -i -E "retrans|timeout|spurious" 可快速过滤。注意:CentOS 7+ 默认禁用 netstat,需装 net-tools 包;推荐优先用 ss -s(但不显示重传细节)。

丢包发生在哪一层?用 tcpretransdropwatch 定位

用户常误以为丢包=网卡问题,其实可能在 IP 层(如 ip_forward 关闭)、iptables 规则(REJECT 不计为 drop)、甚至 socket 接收队列溢出(Recv-Q 持续满)。

  • tcpretrans(来自 bcc 工具集)可追踪每个重传事件的源头 socket 和调用栈,需启用 ftrace 和 kernel debuginfo
  • dropwatch -d -l kas 监听内核 drop 点,输出类似 skb_drop: 10.244.1.5:48922 10.244.1.6:80 (tcp),能定位到具体协议栈函数(如 tcp_v4_do_rcvip_local_deliver
  • dropwatch 显示大量 nf_hook_slow,大概率是 iptables/nftables 规则匹配耗时或丢弃

没有 bcc?可用 cat /proc/net/snmp | grep -A1 Tcp 查看 EstabResets(异常关闭)和 AttemptFails(SYN 发出后无响应),辅助判断是服务未启还是中间拦截。

剪映专业版
剪映专业版

一款全能易用的桌面端剪辑软件

下载

ethtool -S 输出里哪些字段真有用?

ethtool -S eth0 返回上百行计数器,多数与物理层相关,但只有几个对排查真实网络性能关键:

  • rx_discards:驱动层丢包,值 > 0 且持续增长 → 接收队列满(net.core.netdev_max_backlog 不足)或内存不足
  • rx_missed_errors:DMA 未及时取走数据导致 ring buffer 溢出,和 rx_discards 同时升高 → CPU 处理不过来或中断绑定不均
  • tx_aborted_errors / tx_carrier_errors:物理链路问题(网线、光模块、交换机端口协商失败),非软件可调
  • 避开干扰项:rx_crc_errors 在千兆以上网卡中极少由真实 CRC 错误引起,更多是 DMA 边界错位,不必优先排查

注意:不同网卡驱动暴露的字段名差异大(如 ixgbe 用 rx_discards,igb 用 rx_dropped),务必查对应驱动文档。

为什么 ping 延迟低,但应用 HTTP 却卡顿?看 socket 队列和 TIME_WAIT

ping 测的是 ICMP echo,绕过传输层和应用层缓冲;而 HTTP 卡顿往往卡在:

  • 发送端 Send-Q 持续 > 0(ss -tni 查看),说明应用 write() 后内核发不出去 → 拥塞控制压制、对端接收窗口为 0、或网卡 TX queue 堵塞
  • 大量 TIME-WAIT socket 占满本地端口(尤其短连接服务),表现为 connect(): Cannot assign requested address → 调整 net.ipv4.ip_local_port_rangenet.ipv4.tcp_fin_timeout,但更优解是复用连接或改用 net.ipv4.tcp_tw_reuse = 1(仅客户端有效)
  • ss -lnt 显示监听端口 Recv-Q 长期 > 0 → 应用 accept() 太慢,或被信号/锁阻塞

别迷信 iftopnethogs 显示的“实时流量”,它们基于 pcap 抓包,本身会引入延迟且无法反映队列堆积。真正瓶颈往往藏在 ss -icwndrttretrans 字段里。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

380

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

566

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

380

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

566

2023.08.10

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

301

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

395

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

1378

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1840

2024.08.16

漫蛙2入口地址合集
漫蛙2入口地址合集

本专题整合了漫蛙2入口汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.7万人学习

Git 教程
Git 教程

共21课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号