如何排查通过互联网网关连接 VPC 中的 Amazon EC2 Windows 实例和本地主机时出现的网络性能问题?

上次更新时间:2019 年 10 月 7 日

我通过互联网网关连接 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例和本地主机时,遇到了网络性能问题。如何排查这些数据包丢失或延迟问题?

解决方法

注意:开始排查问题前,请先确定源 IP 地址和目标 IP 地址。如果目标是一个 URL,请使用 nslookup 命令来确定 IP 地址。请注意,某些 URL 使用动态 IP 地址,因此 IP 地址可能会有所变化。多次运行命令以查看 IP 地址是不是常量。

检查 ECN 能力

1.运行以下命令以确定是否启用了显式拥塞通知 (ECN) 功能。

netsh interface tcp show global

2.如果已启用 ECN 功能,请运行以下命令禁用它。

- netsh interface tcp set global ecncapability=disabled

3.如果性能没有改观,可以使用以下命令重新启用 ECN 功能。

netsh interface tcp set global ecncapability=enabled

检查跃点,排查 TCP 端口连接问题

首先使用 MTR 或 tracert 查看跃点:

MTR 法

1.    下载并安装 WinMTR

2.    在主机部分输入目标 IP,然后选择启动

3.    测试运行一分钟,然后选择停止

4.    选择复制到剪贴板并将输出粘贴到文本文件。

5.    通过填充到目标中的 % 列来查看任何丢包情况。
注意:请忽略任何消息为主机无应答的跃点。此消息说明这些特定的跃点未响应 ICMP 探测。

6.    使用自下而上的方法通过 MTR 报告检查跃点。例如,检查最后一个跃点或目标上是否发生丢包,然后检查前面的跃点。

tracert 法

如果您不想安装 MTR,则可以使用 tracert 命令实用工具。

1.    对目标 URL 或 IP 地址执行 tracert

2.    查找往返时间 (RTT) 突然增高的任何跃点。RTT 突增可能说明存在高负载节点,这进而会导致流量延迟或丢包。

然后检查 TCP 端口连接:
注意:由于 WinMTR 和 tracert 都基于 ICMP,您可以使用 tracetcp 来排查 TCP 端口连接问题。

1.    下载 WinPcaptracetcp

2.    提取 Tracetcp 压缩文件。

3.    将 tracetcp.exe 复制到 C 盘。

4.    安装 WinPcap。

5.    使用 C:\Users\username>cd \ 命令打开命令提示符和根 WinPcap 进入 C 盘。

6.    使用以下命令运行 tracetcp:tracetcp.exe hostname:porttracetcp.exe ip:port

检查 Windows 任务管理器

如果您有权访问源实例或目标实例,可检查 Windows 任务管理器。查找与 CPU 和内存利用率或平均负载有关的问题。

抓取数据包

注意:最佳实践是首先启动抓包,然后再启动流量。此方法可帮助您捕获流量的所有数据包。

1.    安装 Wireshark 并进行抓包。

2.    使用以下筛选条件以在抓包中隔离特定源之间的流量:(ip.addr eq source_IP) && (tcp.flags.syn == 1)。输出显示了该源 IP 发起的所有 tcp 流。

3.    选择含有相关源 IP 和目标 IP 的行。

4.    选择的上下文(右键单击)菜单,然后选择跟随TCP 流。这将返回您要调查的源 IP 和目标 IP 之间的 TCP 流。

5.    查找重新传输、重复数据包或 TCP 窗口已满窗口大小为零等 TCP 窗口大小通知。这些通知可能表明 TCP 缓冲区空间不足。