【问题标题】:Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?azure service fabric cluster 中的 web api 无状态服务在一段时间不活动后是否进入睡眠状态?
【发布时间】:2017-02-04 05:29:43
【问题描述】:

我们有一堆基于 owin 的 Web api 服务托管在 azure 服务结构集群中。所有这些服务都已映射到相关负载均衡器中的不同端口。创建集群时有 2 个开箱即用的探针。它们是:FabricGatewayProbe 和 FabricHttpGatewayProbe。我们添加了端口规则并在其中使用了 FabricGatewayProbe。

由于某种原因,这些服务端点似乎在一段时间不活动后进入休眠状态,因为这些服务的客户端正在超时。我们尝试将负载均衡器空闲超时时间调整为 30 分钟(最大值)。它似乎立即有帮助,但只是短暂的一段时间,然后我们又回到了超时错误。

我还应该在哪里寻找解决此问题的方法?

【问题讨论】:

  • 也许添加一个定期 ping 您的服务的演员?另外,请查看这里的服务生命周期:github.com/Azure/azure-content/blob/master/articles/…
  • 另外,你可以监听停用事件并采取行动
  • 我查看了文档链接。如果我们没有任何未处理的异常,则不应关闭/中止服务。在这种情况下,您认为我们还会遇到这些超时问题吗?
  • 您需要对每个端口进行探测,否则负载均衡器将从其池中删除该节点。见附加链接azure.microsoft.com/en-gb/documentation/articles/…
  • 我查看了链接,没有看到每个端口需要一个探测器的任何要求。我错过了这篇文章的内容吗?

标签: azure-service-fabric


【解决方案1】:

因此,对于我们的 cmets,我同意该文档可以解释,但经过一些测试后,我可以确认以下内容:

通过门户创建新集群时,它会为您提供 1:1 的规则与探测关系,并且在修改我现有的 ARM 模板之一以使用与您相同的现有探测时,我还能够重现您的问题有。

经过反思,这是有道理的,因为探针有效地绑定到服务,如果您尝试共享不同端口上规则的探针,负载均衡器将如何知道其中一项服务是否实际启动,Service Fabric (取决于您的实例计数设置)将在节点之间移动服务。

因此,如果您在不同端口上有两个服务在不同节点上使用相同的探针,则不使用探针中的端口的服务将收到请求响应时间过长的错误。

有点啰嗦,所以希望一个简单的说明能帮助说明我的意思。

【讨论】:

  • 感谢您抽出时间来测试我的问题。这当然是有道理的。我也会在我这边测试它,并将报告我的结果。我希望文档可以是明确的。
  • 我报告此配置更改使我们的服务性能更好。非常感谢您的帮助。
  • 哇,这真的帮了我很多忙,谢谢。我只是有缓慢的“热身”时间,比如 4-5 秒。但现在服务会立即响应。
猜你喜欢
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 2022-10-18
  • 2016-08-17
相关资源
最近更新 更多