Files
nexus/Cloud DevOps/Uptime 99.9% vs 99.99%.md
2026-09-11 06:20:11 +08:00

280 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#sla #uptime #downtime
# SLA Downtime 计算详解
## 99.9% 与 99.99% 的区别和实际应用
---
## 一、SLA 基本概念
**SLA(Service Level Agreement,服务级别协议)** 是指服务提供商与客户之间约定的服务可用性标准。
### SLA 的计算公式
```
SLA % = (总时间 - 宕机时间) / 总时间 × 100%
反推宕机时间:
宕机时间 = 总时间 × (1 - SLA%)
```
**关键点:** SLA 99.9% 意味着允许 0.1% 的宕机时间,99.99% 意味着允许 0.01% 的宕机时间。
---
## 二、按月计算的 Downtime 时间
### 1. 月度总时长(以30天为例)
|单位|数值|
|---|---|
|总天数|30天|
|总小时数|30 × 24 = 720小时|
|总分钟数|30 × 24 × 60 = 43,200分钟|
|总秒数|30 × 24 × 60 × 60 = 2,592,000秒|
> 注:实际应用中,有些公司按月份天数计算(28-31天),此处以30天为标准示例。
---
## 三、SLA 99.9% 详解
### 计算公式
```
月度允许宕机时间 = 总时间 × (1 - 99.9%)
= 总时间 × 0.1%
= 总时间 × 0.001
```
### 具体数值
| | |
|---|---|
|Daily|1m 26s|
|Weekly|10m 4.8s|
|Monthly|43m 50s|
|Quarterly|2h 11m 29s|
|Yearly|8h 45m 57s|
### 月度详细计算示例
```
99.9% SLA 月度允许宕机时间:
方法一(按分钟):
宕机时间 = 43,200分钟 × 0.001 = 43.2 分钟
方法二(按秒钟):
宕机时间 = 2,592,000秒 × 0.001 = 2,592 秒 = 43分12秒
结论:一个月内最多可允许约 43分钟的宕机时间
```
### 99.9% 的通俗理解
- **"三个九"** 是常见的说法
- 一年内最长可宕机约 **8.76小时**(相当于一个工作日)
- 一月内最长可宕机约 **43分钟**
- 一周内最长可宕机约 **1分钟**
---
## 四、SLA 99.99% 详解
### 计算公式
```
月度允许宕机时间 = 总时间 × (1 - 99.99%)
= 总时间 × 0.01%
= 总时间 × 0.0001
```
### 具体数值
| | |
|---|---|
|Daily|8.6s|
|Weekly|1m 0.48s|
|Monthly|4m 23s|
|Quarterly|13m 8.9s|
|Yearly|52m 36s|
### 月度详细计算示例
```
99.99% SLA 月度允许宕机时间:
方法一(按分钟):
宕机时间 = 43,200分钟 × 0.0001 = 4.32 分钟 = 4分19秒
方法二(按秒钟):
宕机时间 = 2,592,000秒 × 0.0001 = 259.2 秒 ≈ 4分19秒
结论:一个月内最多可允许约 26秒的宕机时间
```
### 99.99% 的通俗理解
- **"四个九"** 是高端服务的标准
- 一年内最长可宕机约 **52.6分钟**(接近1小时)
- 一月内最长可宕机约 **4分23秒**(几乎不允许停机)
- 一周内最长可宕机约 **1分钟**
- 对于银行、支付系统等核心业务系统通常要求此级别
---
---
## 六、Downtime 的统计方法
### 1. 宕机时间的计算
#### **定义**
宕机时间 = 服务不可用的时间段
#### **统计方式**
```
开始宕机时间:用户首次无法访问服务的时刻(UTC时间戳)
结束恢复时间:服务完全恢复可用的时刻(UTC时间戳)
宕机时长 = 结束恢复时间 - 开始宕机时间
```
#### **实际例子**
```
2024年9月5日 14:30:00 - 服务开始故障
2024年9月5日 14:45:30 - 服务完全恢复
宕机时长 = 15分30秒
```
### 2. 月度 SLA 计算
```
月度SLA% = (总时间 - 月度累计宕机时长) / 总时间 × 100%
例:
总时间 = 43,200分钟(30天)
月度累计宕机时长 = 65分钟(多次故障累加)
月度SLA% = (43,200 - 65) / 43,200 × 100%
= 43,135 / 43,200 × 100%
= 99.85%
结论:该月SLA未达到99.9%的要求
```
### 3. 需要注意的统计细节
#### ✅ **应该计入宕机时间**
- 完全不可用的时间段
- 部分功能不可用且影响主要业务的时间段
- 包括故障发现到完全恢复的全部时间
#### ❌ **通常不计入宕机时间**
- 计划内维护时间(如提前通知的升级)
- 客户端问题导致的无法访问
- 客户网络问题导致的连接失败
- 用户操作错误导致的故障
### 4. 宕机统计的数据来源
```
主要来源:
├─ 服务器日志(访问日志、错误日志)
├─ 监控告警(Prometheus、Datadog等)
├─ 负载均衡器日志
├─ CDN日志
├─ 用户反馈/投诉
└─ 自动化探测(Ping、健康检查)
```
---
## 七、实际应用案例
### 案例1:电商平台(需要99.9%)
```
月度时间:43,200分钟
允许宕机:43分钟
场景:
- 8月发生2次故障
第一次:15分钟
第二次:28分钟
累计:43分钟
评估:刚好达到99.9% SLA,但已是极限
```
### 案例2:支付系统(需要99.99%)
```
月度时间:2,592,000秒
允许宕机:259秒(约4分钟)
场景:
- 一整月运行无任何宕机事件
- 部分时间段响应缓慢但服务可用
- 计划维护避开业务高峰
评估:完全满足99.99% SLA要求
```
### 案例3:内部系统(需要99.5%)
```
月度时间:43,200分钟
允许宕机:216分钟(3.6小时)
场景:
- 一个月内宕机3小时
- 仍在容许范围内
评估:满足99.5% SLA要求
```
---
## 九、最佳实践
### 💡 监控和告警
- 使用专业监控工具(Prometheus、Grafana等)
- 设置实时告警机制
- 记录所有故障时间和原因
### 💡 故障恢复
- 制定明确的恢复流程(RTO/RPO)
- 设置自动故障转移(如主备切换)
- 定期进行故障演习
### 💡 数据统计
- 使用UTC时间戳,避免时区混淆
- 保存完整的历史日志(建议至少保留1年)
- 定期生成SLA报告,对外透明化
### 💡 承诺管理
- 清楚标注哪些维护不计入SLA
- 对客户设定合理预期
- 提供赔偿机制(宕机补偿)
---
**更新日期:** 2024年 **适用范围:** SLA管理、性能评估、架构设计