Service Fabric 资源平衡器使用陈旧的报告负载

Service Fabric Resource balancer uses stale Reported load

在研究 Service Fabric 上的资源平衡器和动态负载指标时,我们 运行 遇到了一些问题 (运行 devbox SDK GA 2.0.135)。
在 Service Fabric Explorer(门户和独立应用程序)中,我们可以看到平衡经常 运行,most of the time it is done almost instantly 并且每秒发生一次。在查看节点或分区上的负载度量信息时,它不会在我们报告负载时更新值。

我们根据我们的交互(对服务的HTTP请求)发送动态负载报告,大量增加单个分区的报告负载数据。这个尖峰在 5 分钟后的某个地方变得可见,此时平衡器实际上开始平衡。这似乎是刷新加载数据的时间间隔。 上次报告时间 一直在更新,但没有新值。

我们将指标添加到 applicationmanifest 和 clustermanifest 以确保它在平衡中得到使用。 这意味着资源平衡器使用相同的数据 5 分钟。这是可配置的设置吗?是不是因为它在 devbox 上 运行ning 而受到限制? 我们在 clustermanifest 中尝试了很多变量,但 none 似乎影响了这个刷新时间。

如果这不适应,有人可以解释为什么你 运行 平衡器有陈旧的数据吗?为什么选择这个 5 分钟间隔?

这确实是一个可配置的设置,默认为 5 分钟。它背后的想法是,在 prod 中,你有大量的副本一直在报告负载,所以你想对它们进行批处理,这样你就不会将所有这些作为独立消息向集群资源管理器发送垃圾邮件。

您可能是对的,因为这个值对于本地开发来说方式太长了。我们将考虑为本地集群更改它,但与此同时,您可以将以下内容添加到本地集群清单以更改我们默认等待的时间量。如果那里已经有其他设置,只需添加 SendLoadReportInterval 行。该值以秒为单位,您可以相应地进行调整。下面会将默认负载报告间隔从 5 分钟(300 秒)更改为 1 分钟(60 秒)。

    <Section Name="ReconfigurationAgent">
        <Parameter Name="SendLoadReportInterval" Value="60" />
    </Section>

请注意,这样做确实会增加某些系统服务 (TANSTAAFL) 的负载,并且一如既往,如果您在生成的或完整的集群清单上运行,请确保在部署它之前进行 Test-ServiceFabricClusterManifest。如果您正在使用本地开发集群,部署它的最简单方法可能只是修改集群清单模板(此处默认为:"C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\NonSecure\ClusterManifestTemplate.xml")并添加该行,然后右键单击 Service Fabric系统托盘中的本地集群管理器和 select "Reset Local Cluster"。这将使用您对模板的更改重新生成本地集群。