诊断Service Fabric应用程序失败的原因

时间:2016-03-24 07:53:33

标签: azure azure-service-fabric

我有无状态的Service Fabric服务。我的服务还有一个OWIN Web Api服务端点。如果我在服务启动时遇到任何异常或错误,我会看到所有类型或错误和异常的相同错误消息:

    Error event: SourceId='System.FM', Property='State'.
    Partition is below target replica or instance count.

所以每次都很难得到真正的问题。 我试过这个:

    AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
    {

    };

但它没有帮助。我试图将所有代码包装在try / catch中,但是没有异常被捕获。

有谁知道如何从SF获取真实的原因/异常消息/错误消息?

2 个答案:

答案 0 :(得分:2)

您有两个基本选项...从您的代码中发出诊断信息(如错误,应用程序事件等),然后捕获/查询,或在Service Fabric外部运行您的应用程序并在本地调试启动问题。

在SF生产部署中,您需要设置诊断程序,以便您的应用程序可以发出Windows事件跟踪(ETW)事件以及核心Service Fabric运行时发出的事件:

https://azure.microsoft.com/en-us/documentation/articles/service-fabric-diagnostic-how-to-use-elasticsearch/

这是一项相当多的工作,但如果您打算了解您的应用程序在生产中所做的事情,那么这是必要的。无论你是否在SF中运行,这也是你需要做的事情(以某种形式或其他形式)。

因为在你的情况下你想调试你的代码中的启动问题,并且因为你有一个基于OWIN Web API的无状态服务,我首先尝试在Service Fabric之外本地调试它,看看是否你可以通过这种方式隔离问题。当然,这只有在你能够在本地运行时才有用,并且b)如果问题不是特定于SF集成/启动本身。但确定这一点的唯一方法可能是尝试在SF运行时之外运行本地。

希望有所帮助......祝你好运!

答案 1 :(得分:0)

我遇到了来自Service Fabric资源管理器的相同通用错误的相同问题。由于我在本地运行,我能够在Visual Studio中打开诊断事件窗口,这给了我更详细的错误消息。如果您没有在本地运行,您仍然可以进行调试。

请参阅以下链接:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-debugging-your-application