5.7 KiB
5.7 KiB
#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管理、性能评估、架构设计