2. SLA 关键指标设计:可用性、性能、容量与安全

指标设计是 SLA 的骨架。我见过太多团队把 SLA 写成「保证系统稳定运行」这种空话,结果一出故障双方扯皮。说白了,指标必须可测量、可验证、可问责。这一章我们拆开揉碎了讲四个核心维度。

2.1 可用性指标:99.9% 到底意味着什么?

可用性是最常见的 SLA 指标。但很多人只写一个数字,不写计算口径。我遇到过一家客户,合同写 99.9%,结果故障 8 小时他们说不算,因为「维护窗口不计入」。嗯,这就是口径没定死的后果。

2.1.1 可用性计算公式

可用性 = (总时间 - 不可用时间) / 总时间 × 100%

这里的关键是「不可用时间」怎么定义。我个人习惯用 服务完全不可用 作为基准,部分功能降级不算。但有些场景需要更细的粒度,比如按请求成功率算。

2.1.2 常见可用性等级与容忍停机时间

可用性等级 年容忍停机时间 月容忍停机时间 典型场景
99% 87.6 小时 7.3 小时 内部工具、开发环境
99.9% 8.76 小时 43.8 分钟 一般企业应用
99.99% 52.6 分钟 4.38 分钟 金融交易、电商核心
99.999% 5.26 分钟 25.9 秒 电信、医疗、航空
注意: 99.999% 不是随便写的。要达到这个级别,架构上必须有冗余、自动故障转移、多活部署。我曾经帮一个客户审计 SLA,他们写了 99.999%,但实际只有单节点部署……结果可想而知。

2.1.3 可用性计算口径的坑

  • 维护窗口是否计入? 我建议明确写「计划内维护不计入不可用时间」,但维护窗口要有上限(比如每月不超过 2 小时)。
  • 部分故障怎么算? 比如 10 个节点挂了 1 个,算 10% 不可用还是 100%?我个人习惯按影响用户比例算。
  • 第三方依赖故障? 如果因为云厂商挂了导致你不可用,算谁的?最好在 SLA 里写清楚「第三方不可抗力除外」。

2.2 性能指标:响应时间与吞吐量

性能指标是用户最直观的感受。你想想看,一个页面 3 秒打不开,用户早就跑了。但性能指标不能只写一个平均值,那会掩盖很多问题。

2.2.1 响应时间

响应时间通常用 百分位 来描述,而不是平均值。为什么?因为平均值会被极端值拉偏。比如 99% 的请求 100ms,但 1% 的请求 10s,平均值才 199ms,看起来很好,实际上那 1% 的用户已经炸了。

百分位 含义 典型阈值
P50 一半请求快于这个值 200ms
P95 95% 的请求快于这个值 500ms
P99 99% 的请求快于这个值 1s
我的习惯: SLA 里至少写 P95 和 P99。P50 可以内部看,但对外承诺用 P95 更合理。我曾经遇到一个项目,客户坚持要 P99 小于 200ms,结果架构成本翻了三倍……后来协商改成 P95 500ms,双方都满意。

2.2.2 吞吐量

吞吐量是系统在单位时间内能处理的请求数。常见单位有 QPS(每秒查询数)、TPS(每秒事务数)、RPS(每秒请求数)。

吞吐量指标要注意 峰值 vs 均值。我见过一个案例,合同写「系统支持 1000 QPS」,结果双十一流量冲到 5000 QPS,系统直接挂了。后来我们加了「峰值容忍」条款:允许 10% 的时间超过阈值,但不超过 2000 QPS。

吞吐量指标示例:
- 正常负载:平均 1000 QPS
- 峰值负载:最大 3000 QPS,持续不超过 5 分钟
- 限流策略:超过 3000 QPS 时返回 429 状态码

2.3 容量指标:别等爆了才想起来

容量指标经常被忽略。你想想看,系统平时跑得好好的,突然用户量翻倍,结果 OOM 了。这就是容量规划没做好。

2.3.1 核心容量指标

  • 存储容量: 数据库、日志、文件存储的使用率。建议设置告警阈值,比如 70% 预警,85% 告警。
  • 计算资源: CPU、内存、网络带宽的使用率。我习惯按「峰值使用率」来承诺,比如「CPU 峰值不超过 80%」。
  • 连接数: 数据库连接、Socket 连接、线程数。很多故障都是连接数打满导致的。
容量指标设计原则:
  1. 明确测量对象(CPU 是平均还是峰值?)
  2. 设定阈值(超过怎么办?自动扩容还是人工介入?)
  3. 预留缓冲(别把阈值设到 100%,留 20% 的余量)
  4. 定期复盘(容量指标不是一成不变的,业务增长后要重新评估)

2.3.2 容量规划示例

容量指标承诺:
- 存储使用率:不超过 70%(自动扩容触发阈值为 80%)
- CPU 峰值:不超过 75%(持续 5 分钟以上触发告警)
- 数据库连接数:不超过最大连接数的 60%
- 网络带宽:不超过 1 Gbps(峰值不超过 2 Gbps)

2.4 安全指标:合规与防护

安全指标在 SLA 里越来越重要。尤其是金融、医疗、政务行业,合规是硬门槛。我参与过一个政务云项目,SLA 里专门写了「等保三级合规」,不达标直接扣款。

2.4.1 常见安全指标

指标类别 具体指标 说明
认证与授权 登录成功率、 过期时间 确保只有合法用户能访问
数据加密 传输加密(TLS 1.2+)、存储加密 防止数据泄露
漏洞扫描 高危漏洞修复时间 比如发现高危漏洞后 24 小时内修复
审计日志 日志完整性、保留时长 至少保留 180 天
DDoS 防护 清洗能力、响应时间 比如 5 分钟内启动清洗
避坑指南: 我曾经遇到一个客户,SLA 里写了「数据加密」,但没写加密标准。结果他们用了 MD5 加密密码……嗯,这跟没加密差不多。安全指标一定要写具体标准,比如「使用 AES-256 加密存储」。

2.5 知识体系总览

下面这张图把四个维度的关键指标串起来了。你可以把它当作设计 SLA 时的检查清单。

SLA 关键指标设计框架 SLA 关键指标 可用性 性能 容量 安全 可用性子指标 • 年/月停机时间 • 维护窗口定义 性能子指标 • P95/P99 响应时间 • 峰值吞吐量 容量子指标 • 存储/CPU/内存 • 连接数阈值 安全子指标 • 加密标准 • 漏洞修复时间

2.6 指标设计的三个原则

最后分享三个我踩坑总结出来的原则:

  1. 可测量: 指标必须能通过工具自动采集。别写「用户体验良好」这种主观描述。我见过一个 SLA 写「系统响应迅速」……这怎么量化?
  2. 可验证: 双方都能用同一套数据验证。最好约定数据来源,比如「以 Prometheus 采集的数据为准」。
  3. 可问责: 不达标要有明确的后果。比如「月度可用性低于 99.9% 时,退还当月 10% 服务费」。
一个小技巧: 设计指标时,先问自己三个问题——这个指标用户关心吗?这个指标我们能测吗?这个指标不达标我们能赔吗?如果有一个答不上来,就别写进 SLA。