当前位置: 首页 > news >正文

零基础学习性能测试第二章-linux服务器监控:网络iftop

目录

    • 学习内容与快速应用路径
      • 第一阶段:基础认知与安装 (0.5天)
      • 第二阶段:基本使用与关键指标解读 (1天)
      • 第三阶段:交互式操作与过滤 (核心技能 - 1天)
      • 第四阶段:识别网络瓶颈与快速应用 (工作中实践)
      • 速查清单 (快速应用)

零基础学习使用 iftop 监控 Linux 网络流量并快速应用到性能测试工作中,关键在于 理解核心概念、掌握交互操作、解读关键指标、关联性能问题iftop 是一款强大的实时网络带宽监控工具,能直观显示主机间、端口间的流量排行,是定位网络瓶颈和异常流量的利器。

核心目标:

  1. 理解 iftop 的核心功能: 实时显示网络接口的带宽使用情况、连接对(主机对)、端口流量排行。
  2. 熟练安装和启动 iftop 掌握基本命令参数。
  3. 掌握交互式操作: 学会排序、筛选、切换显示模式。
  4. 解读关键指标: 理解发送速率、接收速率、峰值速率、累计流量的含义。
  5. 定位高流量连接/主机: 快速找出消耗带宽的“元凶”。
  6. 整合到性能测试流程: 在压测过程中实时监控网络流量,分析其与性能表现的关系。

学习内容与快速应用路径

第一阶段:基础认知与安装 (0.5天)

  1. iftop 是什么?

    • 一个基于终端的实时网络带宽监控工具。
    • 核心功能:
      • 实时显示指定网络接口的带宽使用情况。
      • 按主机对(连接对)或端口排序显示流量(默认按目标主机排序)。
      • 显示发送 (TX)接收 (RX) 速率以及峰值 (Peak) 速率。
      • 显示累计 (Cum) 发送和接收的数据量。
      • 支持基于 IP 地址、端口号、网段进行过滤。
    • 优势: 直观、实时、能快速定位流量最大的连接/主机。
    • 劣势: 不记录历史数据(需配合 sar 或监控系统),不直接显示进程信息(需配合 nethogsss/netstat)。
  2. 安装 iftop

    • Ubuntu/Debian:
      sudo apt update
      sudo apt install iftop
      
    • CentOS/RHEL (需要 EPEL 仓库):
      sudo yum install epel-release  # 如果未启用 EPEL
      sudo yum install iftop
      
    • 确认安装成功: iftop -h 应显示帮助信息。
  3. 理解监控对象:网络接口

    • 运行 ip link showifconfig (较老系统) 查看服务器上的网络接口。
    • 常见接口名:
      • eth0/ens192: 物理以太网接口 (最常见)
      • lo: 本地环回接口
      • tun0/tap0: VPN 隧道接口
      • docker0/br-xxxxxx: Docker 网桥接口
    • 快速应用: 确定你要监控哪个接口。通常是连接外部网络或承载被测业务流量的接口(如 eth0)。

第二阶段:基本使用与关键指标解读 (1天)

  1. 启动 iftop

    • 基本命令: sudo iftop (默认监控第一个非 lo 接口,通常是 eth0,需要 root 权限)
    • 指定接口: sudo iftop -i eth0 (监控 eth0 接口)
    • 指定端口: sudo iftop -P (显示端口号,强烈推荐!)
    • 常用组合: sudo iftop -nNP -i eth0
      • -n: 不解析主机名(显示 IP,速度更快,避免 DNS 问题干扰)
      • -N: 不解析端口号(显示端口数字,而不是服务名如 http,更准确)
      • -P: 显示端口号! (非常重要,能看到具体哪个端口流量大)
      • -i eth0: 指定接口
  2. iftop 界面解读 (运行 sudo iftop -nNP -i eth0 后):
    界面主要分为三部分:

    • 顶部 (Header):

      • Interface: 监控的接口名 (e.g., eth0).
      • IP: 本机在该接口上的 IP 地址。
      • => / <=: 箭头指示方向:
        • => (向右箭头):表示 发送 (TX / Outgoing) 流量 (从本机 远程主机)。
        • <= (向左箭头):表示 接收 (RX / Incoming) 流量 (从远程主机 本机)。
      • 中间刻度条 (TX/RX Bar): 直观显示当前总发送/接收带宽占用的相对比例。
      • Rate (速率): 最重要!
        • 2s: 过去 2 秒的平均速率。
        • 10s: 过去 10 秒的平均速率。
        • 40s: 过去 40 秒的平均速率。
      • Cumulative (累计):
        • cume: 本次运行 iftop 以来累计接收的总数据量。
        • peak: 本次运行 iftop 以来观察到的峰值速率
      • Rates (具体数值):
        • TX: 当前发送速率 (e.g., 1.02Mb 表示 1.02 Mbps)。
        • RX: 当前接收速率。
        • TOTAL: 发送 + 接收的总速率。
    • 中部 (主体 - Connection Pairs):

      • 每一行代表一个 主机对 (连接对)单个主机 + 端口 (如果使用了 -P 且流量足够大)。
      • 格式 (有 -P 时常见):
        Remote Host:Port          => Local Host:Port             OR       Local Host:Port          <= Remote Host:Port
        [TX Rate] [RX Rate] [TOTAL Rate]                                  [TX Rate] [RX Rate] [TOTAL Rate]
        
      • 关键列:
        • 第一列 (最左侧): 远程主机 (Remote Host) 或其 IP:Port
        • 中间列 (=> 或 <= 两侧): 本地主机 (Local Host) 或其 IP:Port。箭头方向指示流量相对于本机的方向。
        • 右侧三列 (条形图旁): 该连接对在指定时间尺度 (2s, 10s, 40s) 上的 发送 (TX) 速率、接收 (RX) 速率、总 (TOTAL) 速率。条形图长度直观表示该速率占总带宽的比例。
      • 排序: 默认按 目标主机 (箭头指向的一方)总流量 (TOTAL) 降序排列。这是理解谁在消耗带宽的关键视图。
    • 底部 (Footer):

      • 显示当前排序依据 (e.g., Order: destination),使用的过滤器 (e.g., Filter: [none]) 等信息。
      • 显示 iftop 版本。
      • 显示帮助提示:h 显示交互式帮助菜单 (非常重要!)
  3. 关键指标总结:

    • TX / => 发送 (流出) 速率/流量。服务器主动向外发送数据(如响应请求、上传文件、访问数据库)。
    • RX / <= 接收 (流入) 速率/流量。服务器接收外部数据(如客户端请求、下载文件、数据库返回结果)。
    • TOTAL TX + RX 的总速率/流量。反映该连接对消耗的总带宽。
    • Rate (2s/10s/40s) 不同时间窗口的平均速率。2s 最敏感反映瞬时变化,40s 反映较稳定的趋势。
    • Peak 本次运行中观测到的最高速率(通常指 TOTAL)。
    • Cum 本次运行中累计传输的总数据量。
    • 条形图长度: 直观比较! 条形越长,该连接对在对应方向(TX/RX/TOTAL)上消耗的带宽比例越大。

第三阶段:交互式操作与过滤 (核心技能 - 1天)

iftop 的强大之处在于其交互式操作。在运行界面按 h 键查看完整帮助。

  1. 常用交互式按键:

    • h / ? 显示帮助菜单。必记! 忘记时随时按 h
    • P 切换显示/隐藏端口 (Port)。 这是最常用的键之一!默认可能不显示端口,按 P 确保显示 IP:Port,这对定位具体服务(如哪个 Web 请求、哪个数据库连接)至关重要。
    • T 切换显示模式。 在多种视图间循环切换:
      • 单行 (单主机): 只显示主机 IP,不区分端口(即使开了 -P)。
      • 两行 (主机+端口): 最常用! 第一行显示主机 IP,第二行显示端口号。清晰区分不同连接。
      • 单行 (主机:端口): 合并显示 IP:Port
    • s / d 切换是否显示源 (Source) / 目标 (Destination) 主机。s 隐藏源列(左侧),按 d 隐藏目标列(右侧)。再按一次恢复显示。用于聚焦一方。
    • t 切换速率条形图的显示模式。 在三种模式间循环:
      • 单行 (Two-line): 发送 (=>) 和接收 (<=) 流量分别显示在两行。
      • 单行 (One-line): 发送和接收流量合并显示在一行(条形图叠加)。
      • 无条形图 (Off): 只显示数字,不显示条形图。
    • j / k / / 上下移动光标,高亮选择某一行连接对。
    • > / < 基于当前高亮列排序。 > 按当前高亮列降序,< 按当前高亮列升序。高亮哪列由 l 切换。
    • l 切换高亮列。TX Rate -> RX Rate -> TOTAL Rate 之间循环。高亮后可用 >/< 按该列排序。
    • o 冻结当前排序。o 后,新连接出现但不会改变现有行的顺序。再按 o 恢复动态排序。
    • p 切换是否显示端口监听状态。 显示哪些端口是服务器监听的(会有 * 标记)。有助于识别服务端口。
    • 1/2/3 快速切换速率时间尺度。 1 对应 2s2 对应 10s3 对应 40s。界面顶部 Rate 标签会高亮当前选中的尺度。
    • L 切换流量刻度 (Log Scale)。 对于流量差异巨大的情况,使用对数刻度能让小流量连接也可见。再按切回线性刻度。
    • ! 执行 Shell 命令。 输入命令后回车执行,按 Ctrl+C 取消。
    • q 退出 iftop
  2. 过滤流量 (精准定位):

    • 启动时过滤: 使用 -f 参数指定过滤表达式 (pcap filter)。
      • 只监控特定主机: sudo iftop -f 'host 192.168.1.100' -nNP -i eth0 (只看与 192.168.1.100 的流量)
      • 只监控特定网段: sudo iftop -f 'net 10.0.0.0/24' -nNP -i eth0 (只看 10.0.0.0/24 网段流量)
      • 只监控特定端口: sudo iftop -f 'port 80' -nNP -i eth0 (只看端口 80 的流量)
      • 组合过滤: sudo iftop -f 'host 192.168.1.100 and (port 80 or port 443)' -nNP -i eth0 (只看该主机 80/443 端口流量)
    • 运行时过滤:iftop 运行界面按 f 键,会提示 Enter filter expression:,输入 pcap 过滤表达式后回车生效。按 Ctrl+C 取消输入或清除过滤。
      • 常用过滤符:host, net, port, portrange, src, dst, and, or, not (!)。语法与 tcpdump 相同。

第四阶段:识别网络瓶颈与快速应用 (工作中实践)

  1. 常见性能测试网络瓶颈现象与 iftop 分析:

    • 带宽跑满:
      • 现象: 性能测试时响应变慢,TPS 上不去或下降。iftop 顶部 TXRXTOTAL 速率持续接近或达到物理网卡带宽上限 (e.g., 千兆网卡 ~940Mbps)。
      • 分析: iftop 顶部 TOTAL Rate 接近带宽上限。观察是哪个方向(TX/RX)占主导,哪些连接对 (IP:Port) 贡献了主要流量(通常排在前几行)。
      • 关联: 带宽跑满的时间点与 TPS 下降/RT 上升的时间点吻合。
    • 特定连接流量异常高:
      • 现象: 服务器整体负载不高,但某些请求慢。iftop 可能显示某个特定 IP:Port 对 (如数据库连接、外部 API 调用) 的 TOTAL 速率或 RX 速率异常突出。
      • 分析: 利用排序 (l + >/<) 和过滤 (f) 聚焦可疑连接。结合端口号 (P) 判断服务类型 (e.g., 3306 是 MySQL,6379 是 Redis)。高 RX 可能表示该连接在接收大量数据(如数据库返回大结果集),高 TX 可能表示在发送大量请求或数据。
      • 关联: 该连接流量激增时,涉及该服务的操作响应时间 (RT) 变长。
    • 大量小连接/高并发:
      • 现象: iftop 显示非常多的连接对,虽然单条流量不大,但连接数极多(列表很长,需要滚动查看)。顶部 TOTAL Rate 可能不高,但 Peak 可能很高或有波动。
      • 分析: 这可能不是带宽瓶颈,而是连接数瓶颈服务器处理能力瓶颈(如应用服务器线程池满、数据库连接池满)。iftop 帮助确认了连接数规模。
      • 关联: 高并发压测时出现连接超时、拒绝连接等错误,同时 iftop 显示海量连接。
    • 非预期流量 (安全/异常):
      • 现象: 服务器负载异常或带宽被不明占用。iftop 显示大量与业务无关的 IP:Port 流量(如可疑的外国 IP、非标准端口)。
      • 分析: 利用 iftop 快速发现可疑流量源和目标。结合端口判断(如 22 SSH 爆破,1433/3306 数据库爆破)。
      • 关联: 此流量消耗资源,影响正常业务性能。
  2. 快速应用到性能测试工作流程:

    • 测试前准备:

      1. 安装 iftop
      2. 确定待监控的网络接口 (ip link show / ifconfig)。
      3. 记录网卡带宽: 知道理论最大值 (e.g., eth0 是 1000Mbps)。
      4. (可选) 准备常用命令备忘单(特别是交互键)。
    • 压测中实时监控:

      • 启动命令: sudo iftop -nNP -i eth0 (替换为你的接口)
      • 关键操作:
        1. 确保按了 P 显示端口号!
        2. 确保视图是 T (两行模式 - 主机和端口分开)。
        3. 观察 顶部TX, RX, TOTAL Rate 是否接近带宽上限?
        4. 观察 主体列表
          • 哪些 IP:Port 对排在最前面 (消耗最多 TOTAL 带宽)?
          • 流量主要是 发送 (=>) 还是 接收 (<=)?这指示了数据流方向(服务器在拉数据还是推数据)。
          • 是否有非预期的高流量连接?(如非业务 IP、非业务端口)
        5. 使用 1/2/3 切换时间尺度,看不同时间窗口的趋势。
        6. 对可疑连接:
          • j/k 高亮它。
          • l 高亮 TOTAL 列 (或其他列)。
          • > 按高亮列降序排序,确认其位置。
          • (可选) 按 f 过滤只显示该 IP 或端口,进一步观察。
      • 核心关注:
        • 带宽瓶颈信号: 顶部 TOTAL Rate 持续 > 80% 带宽上限。
        • 高流量连接: 列表中持续排在前列的 IP:Port 对,其 TOTAL 速率显著高于其他连接。
        • 流量方向: 是服务器发出去的 (TX/=>) 多,还是收进来的 (RX/<=) 多?这对理解瓶颈点(出口带宽 vs 入口带宽,服务器是否在大量读/写外部资源)很重要。
        • 关联性能: 当上述现象出现时,立即记录时间戳,并检查此时性能测试工具的 TPS、RT、错误率 是否出现恶化?建立时间关联性!
    • 测试后分析与报告:

      • 定性描述:
        • 压测期间网络带宽峰值 (TOTAL Rate max) 是多少?占理论带宽的百分比?
        • 主要流量方向 (TX-heavy / RX-heavy / Balanced)?
        • 消耗带宽 Top N 的连接对是哪些 (IP:Port)? 根据端口推断其服务类型 (e.g., 192.168.10.20:5432 => 10.0.0.5:55000 可能是 AppServer 连接 DB)。
        • 是否观察到非预期流量?
      • 关联分析:
        • 当带宽接近饱和 (TOTAL Rate > X%) 时,TPS 是否无法提升?RT 是否显著上升?错误率(如超时)是否增加?
        • 当特定连接 (如 DB 连接) 流量异常高时,依赖该连接的操作 RT 是否变长?
      • 报告要点:
        • 网络带宽使用情况: 峰值速率、是否触及瓶颈。
        • 主要流量贡献者: 列出 Top 3-5 流量连接对 (源IP:Port -> 目标IP:Port) 及其大致速率和方向。
        • 发现的问题:
          • “压测高峰时,出口带宽 (TX) 持续达到 920Mbps (占千兆带宽 92%),与 TPS 停滞在 1500 的时间点吻合,判断为出口带宽瓶颈。主要流量源为 Web 服务器向用户推送大量图片资源 (80/TCP, 443/TCP)”
          • “发现与数据库 10.1.2.3:3306 的连接在 RX (接收) 方向流量峰值达 50Mbps,远高于其他连接。同时段涉及复杂查询的 API 平均 RT 从 100ms 升至 800ms,怀疑数据库返回数据量过大或查询效率低。”
          • “监控到大量来自 202.96.xx.xx22/TCP 端口的连接尝试 (SSH),消耗少量带宽但占用连接数,建议加强安全策略。”
        • 建议:
          • 带宽瓶颈:升级网络带宽、优化应用减少数据传输(压缩、分页、缓存)、CDN 加速静态资源、负载均衡分散流量。
          • 特定连接高流量:优化对应服务(如数据库查询、API 响应)、检查调用是否合理、增加缓存。
          • 非预期流量:安全加固(防火墙、Fail2ban)、关闭无用端口。

速查清单 (快速应用)

  • 安装: sudo apt/yum install iftop
  • 启动 (推荐): sudo iftop -nNP -i eth0 (替换接口)
  • 必按交互键:
    • P - 显示端口 (Show Ports)
    • T - 切换到 两行显示模式 (显示主机+端口)
    • 1/2/3 - 切换速率时间尺度 (2s/10s/40s)
    • l + > - 按 TOTAL 列降序排序 (找出流量最大者)
    • f - 过滤流量 (e.g., host x.x.x.x, port y)
    • h - 显示帮助 (随时救命)
    • q - 退出
  • 关键看什么:
    1. 顶部: TX, RX, TOTAL Rate (接近带宽上限?)
    2. 列表前几行: 哪些 IP:Port 流量 (TOTAL) 最大?方向 (=>/<=) 是什么?
    3. 关联性能: 当 1 或 2 出现异常时,TPS/RT/错误率是否恶化?

总结: iftop 是性能测试中监控网络流量的 实时显微镜。零基础快速上手的核心是 用对命令 (-nNP)、按对键 (P, T)、看对地方 (顶部带宽、列表 Top)、建立关联 (带宽/高流量 vs TPS/RT)。通过几次压测实战,你就能快速掌握 iftop,精准定位网络层的性能瓶颈或异常,为优化提供关键洞察。祝你成功!

http://www.dtcms.com/a/288332.html

相关文章:

  • HTTP与HTTPS技术细节及TLS密钥交换与证书校验全流程
  • 马走日题解
  • LeetCode Hot100【7. 整数反转】
  • MyBatis动态SQL全解析:五大核心标签实战指南
  • [每日随题11] 贪心 - 数学 - 区间DP
  • 路由器内部电子元器件详解
  • C++数据结构————二叉树
  • 模电基础-电压和电阻
  • RISC采用的3种流水技术的功能和区别分析
  • 【官方】OneCode 3.0 核心技术白皮书:注解驱动、可视编码与 AI 融合
  • 相角补偿全通滤波器设计:相位均衡(0~350Hz,15°超前)
  • 关于如何同步开发板的时间和现在一样:
  • MyBatis分页神器PageHelper深度解析
  • 【深度学习-Day 38】破解深度网络退化之谜:残差网络(ResNet)核心原理与实战
  • openmv小车追小球
  • 如何设计一个软件项目管理系统:架构设计合集(六)
  • QGIS制作的仪表盘工程
  • Redisson RLocalCachedMap 核心参数详解
  • Python工厂方法模式详解:从理论到实战
  • Python绘制数据(三)
  • 创意 C++ 文本冒险战斗游戏代码
  • 2025年水安备考:水利水电安全员C类考试题
  • 高效检测数据突变的MDAM算法详解
  • 模电基础-电阻和功率
  • 网络通信之TCP协议
  • 深入解析HDFS读取流程:短路读优化、零拷贝技术与DFSClient本地缓存策略
  • 【ComfyUI学习笔记02】工作区的整理与注释办法 | 2个节点包推荐
  • 【Linux】如何理解 “一切皆文件”
  • 《一行注解解决重复提交:Spring Boot 接口幂等实战》
  • [硬件电路-40]:从物理世界到数字软件,信号处理的共通性