Azure在几个数据包之后丢弃TCP连接

时间:2015-01-22 23:55:55

标签: sockets azure tcp

我在尝试维护从本地PC到Azure的TCP连接时遇到了一个奇怪的问题(奇怪的远程桌面工作正常)。我首先注意到我自己的软件存在的问题,但并不局限于此。我注意到的是:

  • TCP 3路握手完成
  • 已成功发送和接收部分数据
  • 发生了一些不好的事情而且没有更多的数据被发送

为了排除我的软件,我测试了netcat。在我的Azure机器上,我设置了一个netcat服务器来回显大文本文件。在我的本地PC上,我建立了与Azure服务器的netcat连接,并观察了一些正在打印的文本文件,然后它就停止了。

第一个Wireshark映像来自Azure服务器,第二个映像来自我的PC。两者都是在我上面描述的netcat测试的同时被捕获的。

Azure - server Local PC - client

以下是我的Azure端点配置(两个端点的结果相同): Azure Endpoints

我目前处于亏损状态,并且对于继续我的调试工作可能出现的问题不太了解。任何建议都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

来自Azure支持的一些人告诉我Azure网络的最大值。 TCP数据包大小为1350.因此,如果您的数据包大于此数,则可能存在问题。尝试将它们限制为1300并再次测试。

答案 1 :(得分:0)

有几件事可能导致这类问题,例如下面的内容。

  1. Azure SLB / SNAT
  2. Azure物理n / w问题(vms所在的Azure路由器上的ACL)
  3. 客户端应用程序前面的代理等。
  4. 我们应该系统地修复问题空间,同时解决这些问题。例如,在这种情况下,您应该在其中一个Azure VMS上运行客户端应用程序,并验证问题是否可重现。如果问题无法重现,则问题必须存在于您当地的电脑上(或机器所在的代理服务器)99%的时间。

    如果您发现问题也可以从其他Azure VM重现,那么在99%的时间内,Azure端必定存在问题。

    识别Azure端问题的一些提示

    检查您的tcp连接是否空闲(不发送)数据4分钟。如果是这种情况,Azure SLB / SNAT层将删除天蓝色方面的tcp连接。您可以通过发送tcp keep alives或使用AzureEndpoint增加vm端点空闲时间来防止此问题。

    希望这有帮助。