我运行了azure云服务工作者角色,只有1个角色实例
worker角色充当TCP服务器,侦听在服务定义文件中配置的端口端口。
因此,在角色实例运行后,我的tcp客户端程序能够连接到工作角色。
但是,每当我重新启动角色实例或在visual studio中发布新版本时,我等待重启或发布完成,azure portal说它的状态正在运行,tcp客户端程序是仍然无法连接服务器,但是,没有做任何事情,大约10分钟后,它自行修复,tcp客户端能够再次连接。
这10分钟的延迟来自哪里?
我认为一旦角色实例的状态变为Running,它就应该再次运行。
首先,我认为这是因为负载均衡器。但是,我在该角色实例远程,并使用命令行netstat -A,该端口甚至没有监听。那么,似乎我的worker角色代码没有运行?
10分钟后,连接好了,我去了远程桌面,再次使用netstat -A,现在端口正在监听。
因此,在重新启动/发布后,我必须等待10分钟才能运行我的工作人员角色代码?
或者我在这里遗漏了什么?
答案 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)。