连接到test.mosquitto.org或iot.eclipse.org并保持5分钟以上,一切似乎都按预期工作。
连接到我的代理(都在Azure托管的VM上-一个是Mosquitto,一个是Emqttd),如果保持活动时间超过5分钟,则我的客户端不会发送ping命令。他们只是死了。代理最终由于无法ping通而断开了它们的连接。我没有使用Azure负载平衡器,而是直接连接到VM。
问题是,连接的设备不知道它是否通过单元网络断开连接(不是确定原因吗?)
通过以太网,它会自动重新连接。
不确定Azure VM的独特之处是否导致我断开连接/ timeout问题,保持时间更长?
最后,如果我使用2分钟或更短的保持时间,一切正常。
#1 楼
我发现了我的问题以及解决方法。如果其他人有类似问题,请在此处发布,以确保完整性。可以使用公共ip地址创建Azure虚拟机(资源管理器,不是经典)。这是管理空闲超时的地方。默认为4分钟。
如果单击门户中的IP地址,您将被带到该VM的公共IP刀片服务器。
选择配置在菜单中查看该刀片。有一个标记为“空闲超时(分钟)”的滑块。进行调整,然后单击顶部的保存。
或者,可以通过powershell
Login-AzureRmAccount
Set-AzureRmContext -SubscriptionId "subscription name"
$publicIpAddress = Get-AzureRmPublicIPAddress -Name "ip address name" -ResourceGroupName "resource group name"
$publicIpAddress.IdleTimeoutInMinutes = 29
Set-AzureRmPublicIpAddress -PublicIpAddress $publicIpAddress
进行配置。
评论
您可以将此答案标记为已接受,然后它应会出现在更高级别的搜索中
– hardillb
18 Mar 8 '18 at 20:17
#2 楼
只是为了完成这个问题。评论中已经解决了。看来Azure的路由器会丢弃闲置5分钟的连接。有关详细信息,请参见此堆栈溢出答案:https://stackoverflow.com/questions/16840834/are-built-network-connections-to-azure-endpoint-terminated-by-firewall-or
#3 楼
这。我不记得是从哪里捕获的,因此无法链接到源。但是,所有这些信息都可以准确地确定信息。
是的,Microsoft应该在其Azure Linux映像中引入更合适的值。
评论
只是一个猜测,但我认为可能是在Azure防火墙/路由器中,该路由器在路由/转发到实际主机时具有不活动计时器。您的评论让我开始思考,我发现了这一点:stackoverflow.com/questions/16840834/…