[关闭]
@TedZhou 2025-09-03T02:53:50.000000Z 字数 2913 阅读 341

分层、分段的排查方法是定位网络问题

netstat


第一部分:需要获取的关键指标数据

为了准确定位问题,需要关注以下几类核心网络指标。这些指标能帮助您判断问题的性质:是带宽问题、延迟问题、丢包问题还是解析问题。

  1. 延迟 (Latency) 和 抖动 (Jitter)

    • 是什么: 延迟是指数据包从源头到目的地所需的时间,通常用毫秒(ms)衡量。抖动是延迟的变化程度。
    • 为什么重要: 高延迟会让用户感觉“慢”或“卡”。即使延迟的平均值不高,但如果抖动很大(延迟忽高忽低),也会严重影响业务系统的响应体验,尤其是对实时性要求高的应用。这是最需要关注的指标。
    • 如何获取: 主要通过 pingpathping 命令获取。
  2. 丢包率 (Packet Loss)

    • 是什么: 在数据传输过程中丢失的数据包占总发送数据包的百分比。
    • 为什么重要: 任何大于0%的丢包率都可能导致严重问题。网络协议(如TCP)需要重传丢失的数据包,这会占用额外的时间和带宽,在用户侧表现为严重的卡顿甚至连接中断。对于业务系统来说,理想的内网丢包率应该是0%。
    • 如何获取: pingpathping 命令都会显示丢包率。
  3. 网络吞吐量 (Throughput) / 带宽 (Bandwidth)

    • 是什么: 在单位时间内成功传输的数据量,通常用 Mbps (兆比特每秒) 或 Gbps 表示。
    • 为什么重要: 如果实际吞吐量远低于链路的理论带宽,或者在卡顿发生时网络流量达到链路极限,说明可能存在网络拥堵。客户反馈“整体网络不好,相互影响”很可能与此有关。
    • 如何获取: 需要使用 iPerf3 这类专用工具进行测量。
  4. DNS解析时间 (DNS Resolution Time)

    • 是什么: 将业务系统的域名(如 erp.company.com)解析成IP地址所需的时间。
    • 为什么重要: 如果DNS解析慢,那么用户在发起业务请求的第一步就会卡住,感觉系统“半天没反应”。
    • 如何获取: 可以使用 nslookup 命令或 ping 命令的首次响应时间来辅助判断。
  5. TCP连接状态 (TCP Connection Status)

    • 是什么: 包括TCP连接建立时间、重传次数、连接重置等。
    • 为什么重要: 如果网络质量不佳(如丢包),会导致大量的TCP重传。这在应用层面是看不到的,但却是卡顿的直接原因。
    • 如何获取: 使用 netstat 或专业的抓包工具如 Wireshark

第二部分:Windows上可以安装和使用的排查工具

根据上述需要获取的指标,推荐以下工具。这些工具分为系统自带和第三方,建议从简单到复杂组合使用。

A. Windows 系统自带工具 (无需安装)

这些是排查问题的首选,简单快捷。

  1. ping

    • 用途: 测试延迟、丢包和网络可达性。这是最基础、最重要的工具。
    • 常用命令:
      • ping [服务器IP或域名] -t
        • -t 参数会让 ping 命令持续运行,直到你手动停止(按 Ctrl+C)。当用户反馈卡顿时,你可以立即查看 ping 的结果,看延迟是否突然飙升或出现丢包。
      • ping [服务器IP或域名] -n 20
        • 发送20个包然后看统计结果,可以快速得到一个平均延迟和丢包率。
  2. pathping

    • 用途: pingtracert 的结合体,是定位网络路径中哪个节点出问题的神器。它会显示数据包到目标服务器经过的每一个路由节点,并分别计算每个节点的延迟和丢包率。
    • 常用命令:
      • pathping [服务器IP或域名]
        • 命令执行需要几分钟时间,因为它会在每个节点上发送大量数据包进行统计。最终的报告会非常清晰地告诉你,问题出在第几跳。
  3. tracert (Traceroute)

    • 用途: 显示数据包从你的计算机到目标服务器所经过的路由路径。
    • 常用命令:
      • tracert [服务器IP或域名]
        • 如果某个节点的响应时间突然变得非常高,那么问题可能就出在该节点或其下一跳。
  4. nslookup

    • 用途: 检查DNS解析是否正常和快速。
    • 常用命令:
      • nslookup [业务系统域名]
        • 可以查看解析是否成功以及响应的DNS服务器。
  5. netstat

    • 用途: 显示网络连接、路由表、接口统计等信息。
    • 常用命令:
      • netstat -ano
        • 显示所有活动的TCP/UDP连接、监听的端口以及对应的进程ID (PID)。可以用来排查是否有异常程序占用了大量连接。

B. 第三方免费小工具 (建议安装)

这些工具提供了更强大、更可视化的功能。

  1. Wireshark

    • 用途: 终极网络协议分析工具,可以捕获网络接口上的所有数据包并进行深入分析。
    • 适合场景:pingpathping 无法定位问题,需要深入分析应用层协议交互时使用。例如,你可以查看是否有大量的TCP重传(TCP Retransmission)或窗口为零(TCP Zero Window),这些都是网络或服务器性能问题的明确信号。
    • 使用建议: 比较专业,但对于解决疑难杂症非常有效。可以在问题复现时,在客户端和服务器端同时抓包进行比对分析。
  2. iPerf3

    • 用途: 专门用来测试网络吞吐量/带宽的工具。
    • 适合场景: 当你怀疑是网络拥堵或交换机端口性能不足时,用它来测量两点之间的实际可用带宽。
    • 使用方法: 需要在两台计算机上运行,一台作为服务器端 (iperf3 -s),一台作为客户端 (iperf3 -c [服务器IP])。你可以在一台用户PC和文件服务器/应用服务器之间进行测试。
  3. PingPlotter (有免费版)

    • 用途: 可视化的 pingtracert 工具。
    • 适合场景: 它会以图形化的方式持续监控到目标的网络路径,记录每个节点的延迟和丢包历史。对于间歇性、偶发的卡顿问题特别有效,因为你可以回看图表,找到卡顿发生时具体是哪个网络节点出现了问题。
  4. TCPView (微软Sysinternals套件之一)

    • 用途: 一个轻量级的图形化 netstat 工具。
    • 适合场景: 实时显示系统中所有TCP和UDP连接的详细列表,包括远程地址、连接状态、所属进程等。可以非常直观地看到是哪个程序在进行网络通信,方便定位异常流量。

总结与排查建议

  1. 初步测试 (在多台有问题的PC上):

    • 打开命令提示符,对核心交换机、业务服务器分别执行长时间的 ping -t
    • ping [网关IP] -t
    • ping [业务服务器A的IP] -t
    • ping [业务服务器B的IP] -t
    • 让用户正常办公,当用户反馈卡顿时,立刻观察这几个 ping 窗口的结果。
      • 如果只有到业务服务器的 ping 延迟高或丢包,而到网关的 ping 正常,说明问题在终端到服务器之间的链路上。
      • 如果到所有地方的 ping 都同时延迟高或丢包,说明问题更可能靠近用户终端,比如接入交换机或用户的网卡/网线。
  2. 路径定位 (关键步骤):

    • 运行 pathping [业务服务器IP]。这个命令的结果可以直接告诉你延迟或丢包是发生在哪一台交换机/路由器上。这是缩小问题范围最有效的一步。
  3. 带宽验证:

    • 如果怀疑是网络拥堵,在业务高峰期(或用户反馈卡顿时),使用 iPerf3 在客户端和服务器之间测试一下实际吞-吐量,看是否与预期的带宽相符。
  4. 深度分析 (如果需要):

    • 如果以上测试均未发现明显异常,但业务系统依然卡顿,那么问题可能出在应用层或服务器端。此时可以在客户端启动 Wireshark 抓包,复现卡顿操作,然后停止抓包并分析数据包,重点关注TCP重传等异常情况。

通过上述指标和工具的结合使用,您应该能够系统地、数据化地定位到网络瓶颈的所在,为下一步的优化或设备更换提供有力的证据。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注