我们遇到了一个问题,我们可以缩小根本原因的范围,并希望这里的集体能够提供见解。
我们有一个 AWS EC2 实例 c4.8xlarge,它丢弃了 tcp 重传,导致应用程序崩溃。有人见过类似的事情吗?
我们无法查明导致这种情况发生的原因。
我们在远程站点应用程序上有一个系统,它将数据发送到 EC2 实例,然后由 EC2 实例返回。在数据交换过程中,一个数据包在传输过程中丢失。TCP 本质上会尝试恢复。
EC2 实例发送快速重传,但此重传从未离开 EC2 实例的虚拟网卡。
我们让 AWS 直接从 EC2 实例的 NIC 执行数据包捕获,但他们没有看到它到达线路。EC2 实例上的数据包捕获显示了重新传输,但同样,这实际上从未到达虚拟 NIC。
然后,EC2 实例又尝试了 5 次重新传输,但仍然失败,最终 EC2 实例发出 TCP 重置。
Ping/mtr 看起来都正常。我们可以在运行这些最终因丢失重传而导致故障的作业时轻松重现此问题。
任何见解都会有帮助!
编辑:我们尝试通过模拟流量(http 下载/上传、scp 传输)来复制该问题,但似乎我们只能使用原始应用程序进行复制。
最后更新:我们无法确定根本原因。团队已使用新 AMI 重建服务器,目前,新 EC2 实例上一切正常。
答案1
我遇到了完全相同的问题。尝试使用 powershell cmd 为客户端和服务器启用巨型数据包支持Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -RegistryKeyword '*JumboPacket' -RegistryValue '9014'
,问题消失,重新传输成功。