我们正在北欧的Windows Azure Web角色上运行基于WCF的API。最近,我们遇到了与在AWS US East上运行的客户端非常不稳定的连接问题。来自Azure实例的wireshark转储显示TCP数据包在路径的某处丢失,并且我们的Azure实例发生了多次TCP重新传输。
AWS卓越的支持帮助我们确定这可能是由于Azure实例使用的Jumbo Frames片段大小> 1500字节和路径MTU发现无法正常工作。需要注意的是,通常连接会在TLS握手中被卡住(我们的API通过HTTPS运行),因为TLS Hello包大约为5000字节。
我的问题是,在Azure PaaS上配置MTU大小的推荐方法是什么?当云结构重定位实例等时,在实例上运行netsh命令将不会持久。
此外,有没有人遇到过类似的问题?当从默认值降低MTU时,我担心网络性能会降低到其他云资源(SQL Azure,Blob存储,服务总线)。
答案 0 :(得分:0)
为什么不在启动任务中设置MTU配置? 这将在每次启动/重启时再次运行 您还可以检查角色是否未移动,并忽略脚本...
默认情况下不启用巨型帧,因此您可以在启动时运行PS脚本,并手动启用它。
Get-NetAdapterAdvancedProperty -DisplayName "Jumbo Packet" | Set-NetAdapterAdvancedProperty –RegistryValue "9014"
我希望它在某种程度上有所帮助。
答案 1 :(得分:0)
原来,Azure实例并没有真正发送Jumbo Frames。 Wireshark捕获的包只是因为TCP large Segment Offload而表明了这一点。禁用此功能后,Wireshark会指示格式正确的TCP数据包。我们继续寻找Azure和AWS之间丢失的软件包。