【问题标题】:Azure: Worker role looping through "recycling"Azure:工人角色通过“回收”循环
【发布时间】:2012-06-22 18:24:44
【问题描述】:

我目前正在开发一个使用模拟器资源在本地 100% 运行的 Azure 项目。我现在正在尝试部署一个辅助角色,但我遇到了一个我不确定如何排除故障的问题。

在我的 Azure 门户中部署辅助角色后,这两个实例会不断循环通过“回收”。

我可以尝试 RDP 进入角色,但在连接关闭之前我只有大约一分钟的时间环顾四周,我假设是由于回收。

经过一番搜索,这似乎不是一个超级常见的问题。我忽略了一些可能导致此问题的微不足道的事情吗?您将如何解决此问题?谢谢你的时间:)

【问题讨论】:

  • 尝试解压缩您的 CSPKG 文件,然后再次解压缩 .CSSX 文件(只需将 CSSX 重命名为 zip)并匹配所有引用和静态内容。这样您就可以匹配 VM 上的内容.同样在 RDP 的 2 分钟窗口中,尝试查找应用程序事件日志中的异常并获取它,因为这将是找到根本原因的关键。
  • 谢谢阿夫卡什。错误是“Faulting application WaWorkerHost.exe” - 以前遇到过吗?
  • 是的。这意味着您的 Worker Role 代码中的某些问题导致您的 Worker Role Host Process 崩溃。如果您查看故障堆栈,您必须看到生成此故障的代码中的函数或链接。如果您需要帮助,请向 Windows Azure 支持团队打开免费的 Azure 支持事件,他们会为您提供帮助。我也会将此信息添加为答案...
  • 太好了,感谢您的快速回复。如果我无法弄清楚,我将提交 Azure 支持事件。我将如何查看故障堆栈?这需要诸如智能跟踪之类的东西吗?
  • 我有同样/类似的问题。在 Azure 上查看操作日志或通过 VS 使用诊断监控可能会给您一些见解……希望对您有所帮助。

标签: azure azure-storage azure-table-storage azure-blob-storage azure-worker-roles


【解决方案1】:

如果缺少参考,您可以通过以下方式解决此问题:

解压缩您的 CSPKG 文件,然后再次解压缩 .CSSX 文件(只需将 CSSX 重命名为 zip)并匹配所有引用和静态内容。这样您就可以匹配 VM 上的内容。同样在 RDP 的 2 分钟窗口中,尝试查找应用程序事件日志中的异常并获取它,因为这将是找到根本原因的关键。

如果您可以在事件日志中看到异常并查找异常,您肯定可以找到它的生成位置。您还可以使用 Intellitrace,这可能需要您重新部署应用程序。

还有一些方法是复制 WinDBG 并锁定到您可以调试它的特定进程。我不确定你想尝试多少,但只需将 WinDBG 复制到 VM 并使用它就足够了(虽然不确定你对 WinDBG 有多少经验以及你想花多少时间。)

【讨论】:

  • +1 用于应用程序事件日志提示。此外,请验证您的所有外部引用都是“复制本地”真实的,这比分析包本身更容易且几乎一样有效。
【解决方案2】:

也被这个角色回收问题困扰了无数次。 Here is the sequence of steps to debug persistent role recycles

调试 Azure 角色回收

  1. 启用对您的角色的远程访问 - RDP 登录
  2. 检查 eventvwr.msc(Windows 日志 -> 应用程序、应用程序和服务日志->Windows Azure)
  3. 查看C:\logsc:\resourcesAzure 文本文件日志
  4. 查看卷E:F: 中的自定义日志,了解任何自定义角色启动日志记录
  5. 运行AzureTools并附加到启动进程(下载WinDBG,使用Utils->附加调试器,选择进程-WaWorkerHost/WaIISHost等),使用G继续并观察无法加载的程序集的调试器输出。

    通过 Powershell 安装 Azure 调试工具

    PS> md c:\tools;导入模块位传输; Start-BitsTransfer http://dsazure.blob.core.windows.net/azuretools/AzureTools.exe c:\tools\AzureTools.exe; c:\tools\AzureTools.exe

如果以上所有项目都失败 - 尝试使用 AzureTools 宝库中的其他工具 - 例如 fusion logging 等,上述方法将有效!

WinDBG 示例输出 - 找不到程序集 (WaIISHost)

【讨论】:

    【解决方案3】:

    最可能的原因是缺少程序集。捕获此问题的一种策略是将任何启动处理包装在主 try/catch 中,手动将错误记录到 Azure 存储。

    如果您添加了任何引用,请检查以确保它们已设置为 copylocal=true,并且您的服务包中包含的所有外部资产也已设置为包含在内。

    【讨论】:

      【解决方案4】:

      来自上面的 Avkash:

      是的。这意味着您的 Worker Role 代码中的某些问题导致您的 Worker Role Host Process 崩溃。如果您查看故障堆栈,您必须看到生成此故障的代码中的函数或链接。如果您需要帮助,请向 Windows Azure 支持团队发起免费的 Azure 支持事件,他们会为您提供帮助。

      【讨论】:

        【解决方案5】:

        只是一个建议:还要检查可安装(如果有)以及您使用的任何其他参考是 64 位。Azure VM 具有 64 位操作系统。由于 32/64 位问题,我曾经遇到过这种问题。

        【讨论】:

          【解决方案6】:

          您的工作人员角色是否正在退出他们的工作循环?本地回收非常快,您可能不会注意到它,但在云中的启动时间可能很长。

          【讨论】:

            【解决方案7】:

            如果问题是由启动批处理文件引起的,我已通过编辑实例上的批处理文件以在开头包含“exit /b 0”来停止循环。这将告诉 Azure 启动成功,然后您就有了诊断问题所需的所有时间,而不会杀死 VM。

            【讨论】:

              猜你喜欢
              • 2012-10-29
              • 1970-01-01
              • 2016-02-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多