Microsoft Service Fabric 主机服务 (FabricHostSvc) 在启动时挂起

Microsoft Service Fabric Host Service (FabricHostSvc) Hangs on Start

自 2015 年 11 月以来,我一直在使用 Microsoft Service Fabric,遇到了很多问题,但现在 Service Fabric 在我的开发机器上完全无法运行。 Uninstall/reinstall 没有帮助。

我使用的是 1.5 预览版,后来又尝试了 2.0,但无济于事。

当我尝试 运行 来自 Visual Studio 2015 Update 1 的 Service Fabric 应用程序时,问题开始了(正如我在过去几个月中所做的数百次)。

我的机器蓝屏(我第一次看到 Windows 10 蓝屏)。重新启动后,我无法通过 Visual Studio 部署我的 Service Fabric 应用程序。 PowerShell 脚本失败并显示以下消息:

Starting service FabricHostSvc. This may take a few minutes... Start-Service : Failed to start service 'Microsoft Service Fabric Host Service (FabricHostSvc)'.

进入SCM,发现"Microsoft Service Fabric Host Service"处于Starting状态。它就这样呆了一个小时。我尝试多次停止和启动该服务,但每次都挂起。

我卸载了 Service Fabric (Service Fabric, SDK and Tools for VS) 并使用最新版本 2.0 重新安装,它也出现了同样的问题。

重新启动,同样的问题。

删除了 c:\SfDevCluster 文件夹,同样的问题。

根据其他一些文章,我在卸载后查找了任何杂散的性能计数器,但没有找到。

我尝试查看注册表,但还有名称中带有 "Fabric" 的其他 Azure 组件。如果我删除它们,我可能会清理其余的 Azure 开发设置。

现在...当我尝试再次启动该服务时,它确实重新创建了 SfDevCluster 文件夹并提供了一些日志。似乎每分钟创建两个跟踪日志文件,并且它们具有完全相同的内容。

每次失败,trace的最后一行是:

Info ,11176,General.FabricSetup.Main,Operation failed with error 0xffffffff

较早的跟踪 (SF 1.5) 似乎使用常量而不是十六进制值来表示错误。似乎表示无效参数。

无论这次失败是什么,它似乎都是我痛苦的原因。不幸的是,该错误完全没有帮助。

我尽量避免重新安装 Windows,因为那会毁掉一整天的工作效率。

非常感谢任何帮助。

您机器上的一些集群相关设置似乎进入了不一致状态。这将需要查看 Service Fabric 跟踪并找出实际原因。我是 Service Fabric 团队的一名工程师。如果您可以通过 harahma[at]microsoft[dot]com 将 Service Fabric 跟踪(来自日志文件夹)通过电子邮件发送给我,我可以为您提供帮助。

如果您熟悉在 Azure 上记录支持票证,我建议您也这样做,以便我们跟踪此问题以解决问题。与此同时,我将继续努力解决这个问题,看看我们如何才能解除对您的封锁。

请从提升的 powershell 会话中运行:注销-ScheduledTask FabricCounters。

这将解决问题。

我知道这是一个老问题,但也许我的痛苦可以帮助其他人。

如果 Service Fabric 尝试启动时 Windows 防火墙服务不是 运行,您将收到类似的错误。

检查并确保 Windows 防火墙服务设置为自动并且 运行。

我看到了非常相似的行为,重新安装结构 SDK 和运行时、删除计划任务、删除 SfDevCluster 内容等都没有用。

我在事件日志中看到重复的 Docker 错误,当我尝试为 Windows 卸载 Docker 时,SF 立即醒来。我不知道两者之间的交互是什么,但值得检查一下你是否都安装了。

为了搜索者的利益,这是我用来修复本地集群的 Powershell 脚本。它改编自issue fix github。

#
# WARNING: YOU MUST STOP 'SERVICE FABRIC HOST SERVICE' IN SERVICES FIRST
#          IF THE APPLICATION IS STUCK IN 'STARTING', RESTART YOUR MACHINE
# 
# This script will completely reset the local cluster
# 

Remove-Item 'C:\SfDevCluster' -Recurse -Force -ErrorAction Stop 

New-Item -ItemType directory -Path 'C:\SfDevCluster'

Set-Location 'C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup'

./DevClusterSetup.ps1 -PathToClusterDataRoot 'C:\SfDevCluster\Data' -PathToClusterLogRoot 'C:\SfDevCluster\Log'

C:\ 驱动器已满。容易忽视的事情。

确保您的硬盘未满...这使我的硬盘无法启动。清理一些日志后,马上开机

我已经尝试了多种方法来解决这个问题,比如

  1. 卸载运行时和 SDK - 重新安装。
  2. 使用 powershell 命令删除集群并使用相同的设置 还有更多 但不幸的是 none 他们对我有用

然后最后卸载了Docker桌面,突然问题得到了解决。

这很奇怪,不确定 docker 桌面如何阻碍 运行 FabricHostSvc 服务。