如何计算应用程序可用性 (SLA)

How to calculate application availability (SLA)

我有标准 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 或类似的东西获取一些性能计数器。需要调查是否可行。

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

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

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

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

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

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

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

希望您得到的答案能帮助您解决问题。