【问题标题】:How to calculate application availability (SLA)如何计算应用程序可用性 (SLA)
【发布时间】:2018-10-30 19:15:15
【问题描述】:

我有标准的 ASP.NET MVC 项目,我需要计算应用程序可用性以找出我们的SLA level。所以,我需要为我们的 Web 应用程序获取类似的东西。

来自我的托管服务提供商的信息

System Availability: 99.9860%
Total Uptime: 30d 10h:22m:44s
Total Downtime: 0d 0h:6m:9s
Total Reboots: 3
Mean Time Between Reboots: 10.15 days

但我需要计算应用程序的可用性。那么问题来了

如何正确计算 ASP.NET MVC 应用程序的可用性?

也许有人已经实现了这一点,或者任何建议如何做到这一点,我们将不胜感激。

从哪里开始?

我认为的第一点是Application Insights and availability test。问题是测试频率的最小值是5分钟。我需要更精确的测量值。

接下来,创建一个工具,每秒调用我的应用程序并收集信息。结果:非常多的请求。

另外,从 IIS 或类似的东西中获取一些性能计数器。需要调查是否可行。

我知道这个问题可能过于广泛,但我没有找到任何有关应用程序可用性实施的信息。你怎么看?

【问题讨论】:

    标签: asp.net-mvc high-availability uptime downtime service-level-agreement


    【解决方案1】:

    如果我要解释所有可以完成的部分会花费很长时间,所以我会保持简短。

    通常您会在服务水平协议中定义所有这些细节,并在其中定义还包括计划停机时间的可用性目标(即 99 %)。 99% 的可用性目标是让应用程序运行,并且其功能如文档中所述,至多大约每年 87.6 小时。这是SLA uptime calculator

    如您所说,正常间隔是 5 分钟,但您可以通过使用外部网站/服务证明供应商不符合要求,计算您的损失(收入损失、人工成本等)并索赔从他们。您已经有了业务影响分析 (BIA),否则您应该这样做。

    好的,现在进入编程/DevOps 部分。我通常会考虑到这一点来开发应用程序/服务,并将其状态报告给第三方服务,如 NewRelic、Uptrends 或类似服务。作为一个例子,我还为此使用了自制服务,因为准确的要求是每秒至少提供一次数据,并且有严格的截止日期。在我的解决方案中,我使用 WebSockets 按照计划、事件或需要时双向发送数据。这样做的好处是您可以每 500 毫秒发送一次状态(好或坏),并且您会在一秒钟内知道应用程序是否失败(≈ 499 毫秒 + 500 毫秒)。

    使用这样的服务,您可以在一秒钟内测量正常运行时间、感兴趣的自定义事件和可能的错误以及大量其他指标。通常在 5-100 毫秒内,但 WCET/WCRT 很难估计。

    回答您的问题,您无法用这么少的测量点计算应用程序可用性,每 5 分钟一次覆盖大约 1 次。每小时 12 秒,你不能从中得到任何可靠的计算。您可以假设测量点之间一切正常,但这称为猜测。为了提供 500 ms 的精度(Banks),我已经实现了每小时有 14 400 个测量点。

    我希望你得到一个可以帮助你解决问题的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 2011-10-26
      • 2021-07-22
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多