Azure云服务工作者角色在重新引导或发布后未运行

时间:2014-09-11 17:35:27

标签: azure tcp

我运行了azure云服务工作者角色,只有1个角色实例

worker角色充当TCP服务器,侦听在服务定义文件中配置的端口端口。

因此,在角色实例运行后,我的tcp客户端程序能够连接到工作角色。

但是,每当我重新启动角色实例或在visual studio中发布新版本时,我等待重启或发布完成,azure portal说它的状态正在运行,tcp客户端程序是仍然无法连接服务器,但是,没有做任何事情,大约10分钟后,它自行修复,tcp客户端能够再次连接。

这10分钟的延迟来自哪里?

我认为一旦角色实例的状态变为Running,它就应该再次运行。

首先,我认为这是因为负载均衡器。但是,我在该角色实例远程,并使用命令行netstat -A,该端口甚至没有监听。那么,似乎我的worker角色代码没有运行?

10分钟后,连接好了,我去了远程桌面,再次使用netstat -A,现在端口正在监听。

因此,在重新启动/发布后,我必须等待10分钟才能运行我的工作人员角色代码?

或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

很难说,但以下参考资料应该有所帮助:

http://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx。这为您提供了在服务中运行的进程的体系结构。当你的RDP和netstat显示端口没有监听时,你看到了什么进程? WaWorkerHost.exe正在运行吗?

http://blogs.msdn.com/b/kwill/archive/2013/08/09/windows-azure-paas-compute-diagnostics-data.aspx。这将介绍通常用于解决Azure PaaS VM中的问题的所有诊断数据。如果您检查这些日志和事件日志,您是否看到了在无法连接的时间和可用时间之间的突出显示?

您可以检查Windows Azure事件日志,以了解何时启动和停止OnStart()和Run()方法。如果您看到Run()已经启动但是netstat仍然显示端口没有监听,那么您知道问题出现在您的代码中,您可能需要使用调试器(您可以设置远程调试器,以便您可以使用Visual Studio您的桌面调试Azure VM - http://blogs.msdn.com/b/cie/archive/2014/01/24/windows-azure-remote-debugging.aspx)。