Windows Azure 角色无响应

Posted

技术标签:

【中文标题】Windows Azure 角色无响应【英文标题】:Windows Azure Role Unresponsive 【发布时间】:2012-05-27 00:43:18 【问题描述】:

我有一个工作角色,其中运行许多线程来处理来自客户端的连接。在负载测试期间,我们注意到角色变得无响应,并保持在该状态直到我们重新启动它。 在 Visual Studio 调试器中查看它(通过暂停活动进程),我们可以看到许多线程在等待,但是当它取消暂停时,没有任何活动发生。 我如何知道是什么导致角色保持在该状态?

【问题讨论】:

【参考方案1】:

正如您提到的,当您执行负载测试时,您的 Worker 角色开始出现问题,可以安全地假设该角色最初工作正常。这会得出结论,即问题是特定于应用程序的,而不是特定于平台的。您可以通过两种方式从 Windows Azure VM 获取一些诊断信息:

选项 1(首选):为了检查您的 Azure VM 中发生的情况,您确实需要为您的角色添加 Windows Azure 诊断,以便您可以获得性能计数器、内存详细信息、角色进程运行状况和其他数据从 Azure VM 转移到您可以离线分析的 Azure 存储。

选项 2:启用对 Azure VM 的 RDP 访问,然后登录到 Azure VM 并在 Azure VM 中安装 Perfmon、Process Explorer 和其他运行状况监控工具并监控正在发生的事情。

选项 3(最后手段):RDP 到您的 Azure VM 并安装 WinDBG 并调试主机进程

在这种情况下,当你有一个工人角色停止工作时,这是我真正向任何人建议的:

    查找 CPU、内存压力、线程列表并找出哪些线程被阻塞以及可能的原因。 查找主机工作进程的健康状况,上次启动时,是否由于某种原因被回收,在 Azure VM 中运行了多长时间 如果您有一个在您的工作角色中设置为“ProgramEntryPoint”的单独进程,请检查其运行状况 在应用程序系统级别检查事件日志以获取任何线索。在 Worker 角色中,我看不到应用程序事件日志中会有任何内容,但值得一看。 我使用 Process Monitor 来监控一些进程并收集日志以查看进程何时终止的最后一个状态是什么,它正在访问什么以及它是否因其他问题而处于饥饿状态。

最重要的是,您确实需要在 Azure VM 中挖掘根本原因,这与在本地计算机中所做的方式几乎相同。

【讨论】:

谢谢你,非常好的提示。起初,这个问题只出现在 Azure 中的 worker 角色上,但是通过对我们的测试工具进行一些调整,我们开始在开发中看到它。我们有: * 远程访问/Azure 诊断设置 * 性能计数器和自定义事件日志设置为应用程序特定的报告有许多地方正在执行异步操作。我们猜测发生了一个未处理的异常,但事实证明它很难找到。 请问您使用的是哪个 Azure SDK?旧版 SDK 中的远程转发器存在一些问题,这可能会导致 Azure 中出现随机问题,但 SDK 1.6 在这方面非常可靠。如果您在应用中删除 RDP 访问和 Azure 诊断,问题是否仍然存在?

以上是关于Windows Azure 角色无响应的主要内容,如果未能解决你的问题,请参考以下文章

打开程序出现microsoft windows 无响应,怎么办?

Windows程序卡顿无响应问题定位

如何编程以防止 Windows“无响应”对话框 [重复]

什么是Windows挑战和响应认证流程

Windows 睡眠/恢复后 WPF Windows 无响应

资源管理器无响应解决