Azure service fabric 复制副本在API调用中多次失败:IStatelessServiceInstance.Open()

Azure service fabric 复制副本在API调用中多次失败:IStatelessServiceInstance.Open(),azure-service-fabric,Azure Service Fabric,我遇到了Service Fabric Explorer中的以下异常: Unhealthy event: SourceId='System.RA', Property='ReplicaOpenStatus', HealthState='Warning', ConsiderWarningAsError=false. Replica had multiple failures in API call: IStatelessServiceInstance.Open(); Error = System.R

我遇到了Service Fabric Explorer中的以下异常:

Unhealthy event: SourceId='System.RA', Property='ReplicaOpenStatus', HealthState='Warning', ConsiderWarningAsError=false.
Replica had multiple failures in API call: IStatelessServiceInstance.Open(); Error = System.Reflection.TargetInvocationException (-2146232828)
Exception has been thrown by the target of an invocation.
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
   at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
   at FRSecure.AssessmentDesigner.Web.WebHostBuilderHelper.GetWebHost(IWebHostBuilder webHostBuilder, String protocol, String port, String environment) in D:\a\1\s\web_assessmentdesigner\WebHostBuilderHelper.cs:line 16
   at web_assessmentdesigner.WebHostingService.Microsoft.ServiceFabric.Services.Communication.Runtime.ICommunicationListener.OpenAsync(CancellationToken cancellationToken) in D:\a\1\s\web_assessmentdesigner\WebHostingService.cs:line 75
   at Microsoft.ServiceFabric.Services.Runtime.StatelessServiceInstanceAdapter.d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.ServiceFabric.Services.Runtime.StatelessServiceInstanceAdapter.d__0.MoveNext()
以下是我所知道的:

  • 应用程序在本地群集上安装并运行良好,但在Azure上不安装
  • 该应用程序由无状态api和有状态服务组成。有状态的服务启动得很好。无状态程序在大约2分钟后进入失败状态

  • 我的问题是:如何或从何处获得有关底层异常的更多信息?该服务在启动之前失败,因此我的日志记录尚不可用。我在门户上的诊断中看不到任何内容。当此类事件无法在本地复制时,解决此类问题的最佳方法是什么?

    如果您已启用事件提供程序Microsoft ServiceFabric(
    Guid=“cbd93bc2-71e5-4566-b3a7-595d8eeca6e8”
    )将事件发送到诊断程序,则您应该能够看到与此相关的一些事件,调用您的
    WebHostBuilderHelper
    的类
    StatelessServiceInstanceAdapter
    应发出一个事件,该事件表示在打开通信侦听器时发生了
    get exception-XXX
    ,当它遇到上述异常时,可能会包含有关服务失败原因的更多信息


    您还可以简单地将
    WebHostBuilderHelper.GetWebHost(…)
    实现包装在try/catch中,并将捕获到的任何异常记录到
    ServiceEventSource
    中。当服务试图打开侦听器时会发生异常,但从上面看不清楚原因。

    诊断在我看来是正确的工具,因此我很高兴您确认了这一点。我认为诊断设置一定有问题。我有你提到的提供者。我是否应该在门户中看到一些内容:监视器->诊断日志?我已经更新了我的模板以支持诊断,并从这里获得了信息:如果您为
    cbd93bc2-71e5-4566-b3a7-595d8eeca6e8
    添加了
    ETW ManifestProviderConfiguration
    ,那么您应该在诊断中看到这些事件。如果怀疑诊断设置有问题,您可以尝试在Visual Studio中为群集启用流跟踪,然后在重新部署服务时查看其中一个节点,看看是否可以捕获该事件,我意识到诊断存储表中存储了日志信息。出于某种原因,我希望它会出现在门户网站的“诊断”中。通过连接到远程集群,我可以从Visual Studio查看存储表。是的,这也是查看存储表的一种方式,通过VM扩展发送的所有事件都会在那里结束。您是否为群集的服务结构启用了日志分析?这是一个有点棘手的设置正确,但一旦运行它的伟大发现问题。。。您在日志中发现问题了吗?是的,当无状态服务启动并设置对sql数据库的身份验证时,发现是网络连接问题。当你能看到实际问题时,很容易解决。。。