【问题标题】:How to track down errors when Azure web role starts up?Azure Web 角色启动时如何跟踪错误?
【发布时间】:2011-09-30 04:24:38
【问题描述】:

我在 azure 中担任网络角色。它在开发应用程序结构中本地运行良好,但在部署到 Azure 时会静默失败(对任何请求根本没有响应)。

我认为这是 web.config 的一些问题,但这发生得太早了,以至于在我可以在全局 asax 中设置诊断内容之前就已经发生了。如前所述,它在本地运行良好,但 azure 系统根本没有响应。

我如何找出具体的问题才能解决它,例如获取异常文本、堆栈跟踪、IIS 应用程序系统错误日志或任何可能提示我真正问题的内容?

【问题讨论】:

    标签: web-config azure


    【解决方案1】:

    在 Web 角色中运行的绝对第一件事不是您的应用程序,而是您 Azure 项目中 WebRole.cs 中的 OnStart() 方法。这是添加代码以监控您的网站的地方。

    标准技术是将您的应用程序跟踪日志和 Windows 事件日志复制到 Azure 表存储,以及(如果适用)与 CPU 使用率、IIS 统计信息和您有什么相关的工具。

    这里有一个很好的介绍:http://blog.bareweb.eu/2011/01/beginning-azure-diagnostics/

    这里有关于您在应用程序中所需细节的详细信息:http://blog.bareweb.eu/2011/03/implementing-azure-diagnostics-with-sdk-v1-4/

    这仍然适用于 Azure SDK 1.5。

    捕获诊断信息后,您可以使用 Visual Studio 直接查看它们,也可以使用 Cerebrata Azure Diagnostics Manager 之类的工具自动绘制和过滤它们。这个工具的边缘有点粗糙(特别是对于具有多个实例的大型系统:这些图表并不是真的有用),但目前它已经很好了。


    另一种方法是使用远程桌面连接到远程实例并在 Windows 事件日志等中进行一些探索。您还可以使用远程实例上的 Internet Explorer 浏览器直接在本地连接到应用程序,并查看可能隐藏的任何错误等。

    我个人只会在诊断存储机制不起作用时才这样做:生产服务器确实应该完全关闭远程桌面访问,以减少外部攻击的可能表面积。

    【讨论】:

    • 使用远程桌面我可以追踪错误。问题是在应用程序启动时,程序集引用是错误的(错误的程序集版本)。由于这是在任何其他代码执行之前发生的,所以有点棘手,但我从 sys 日志中找到了它。
    • 好消息,好消息 - 我曾经遇到过类似的问题,有一个流氓 32 位程序集潜入雷达。
    【解决方案2】:

    设置诊断是处理应用程序中的跟踪错误的最佳长期解决方案。如果您想要一些更特别的东西,您可以catch the errors and write them to blob storage 或使用您自己的light weight trace listener

    【讨论】:

    • 问题是应用程序崩溃了之前我可以启动任何跟踪代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2013-01-06
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多