4

我有标准的 ASP.NET MVC 项目,我需要计算应用程序可用性以找出我们的SLA 级别。所以,我需要为我们的 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 和可用性测试。问题是测试频率的最小值是5分钟。我需要更精确的测量。

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

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

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

4

1 回答 1

1

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

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

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

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

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

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

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

于 2018-11-01T22:11:59.363 回答