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

时间:2018-10-30 19:15:16

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

我有一个标准的ASP.NET MVC项目,我需要计算应用程序的可用性以找出我们的SLA level。因此,我需要为我们的Web应用程序获得类似的信息。

enter image description here

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

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或类似的工具中获得一些性能计数器。需要调查是否有可能。

我知道可能的问题太广泛了,但是我没有找到有关实现应用程序可用性的任何信息。您如何看待?

1 个答案:

答案 0 :(得分:1)

如果我要解释所有可以完成的部分,则将花费很长时间,因此我将其简短化。

通常,您在服务水平协议中定义所有这些详细信息,并在其中定义可用性目标(即99%),其中还包括计划内的停机时间。 99%的可用性目标是使应用程序及其功能(如文档中所述)最多运行约20分钟。每年87.6小时。这是SLA uptime calculator

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

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

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

要回答您的问题,您无法用那么少的测量点来计算应用程序的可用性,因为每5分钟覆盖一次。每小时12秒,因此您无法进行任何可靠的计算。您可以假设在测量点之间一切正常,但这称为猜测。我已经实现了每小时具有14400个测量点的实现,以提供500毫秒的精度(库)。

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