Mortar Performance SLO
Service Level Objectives Mortar 团队为正式发布承诺 + 监控。这 份文档是对客户公开的 SLO 数字,不是内部 stretch goal。低于 本文承诺会触发 SLA 退款(enterprise pack 详细机制)。
总体可用性
| 指标 | Beta (Mortar Cloud beta) | GA | Enterprise |
|---|---|---|---|
| Uptime (monthly) | 99.5% | 99.9% | 99.95% / 99.99% (tier 加价) |
| RPO (data loss) | 5 min | 1 min | 0 (synchronous replication) |
| RTO (recovery time) | 30 min | 5 min | < 1 min (BYOC + cross-region) |
Beta 故意标 99.5% — early beta 客户接受度,留出运维学习窗口。Q1 真实运行 30 天后再上调到 99.9%。
每个 primitive 的 latency SLO
测点:北京 / 上海 region 内 同 VPC 客户端调 Mortar API。跨 region
- 跨 cloud 的数字另列。
database primitive — Postgres 操作
| 操作 | p50 | p95 | p99 |
|---|---|---|---|
from('t').select(...).limit(N) (N ≤ 100) | 8 ms | 30 ms | 80 ms |
from('t').insert(row) | 12 ms | 40 ms | 100 ms |
from('t').update(...).eq(...) | 15 ms | 50 ms | 120 ms |
from('t').delete().eq(...) | 10 ms | 35 ms | 90 ms |
| 复杂 join (3 表) | 25 ms | 80 ms | 200 ms |
p99 超 200 ms 触发告警。
storage primitive — OSS 操作
| 操作 | p50 | p95 | p99 |
|---|---|---|---|
| Upload < 1 MB | 80 ms | 250 ms | 600 ms |
| Upload 1-10 MB | 250 ms | 800 ms | 2 s |
| Download (signed URL mint) | 10 ms | 30 ms | 80 ms |
| Direct download via CDN (post-sign) | 30 ms | 100 ms | 400 ms |
Upload 大文件用 multipart;下载推荐 signed URL 走 CDN。
compute primitive — Function invoke
| 操作 | p50 | p95 | p99 | 说明 |
|---|---|---|---|---|
| Warm invoke (recent) | 50 ms | 200 ms | 500 ms | 函数 idle 池缓存 |
| Cold start (Aliyun FC) | 800 ms | 1.5 s | 3 s | 100% 冷启冷 — 真实业务用 idle |
| Cold start (Tencent SCF) | 1.2 s | 2.5 s | 5 s | SCF 冷启慢于 FC |
冷启慢是 FaaS 通病,文档要透明告知;用户用 reserved instance(规划中 加)能消掉。
cache primitive — Redis 操作
| 操作 | p50 | p95 | p99 |
|---|---|---|---|
| GET / SET | 1 ms | 3 ms | 10 ms |
| MGET (10 keys) | 2 ms | 5 ms | 15 ms |
| Pub/Sub publish | 1 ms | 4 ms | 12 ms |
Tair (Aliyun Redis) 在 cn-hangzhou + 同 VPC 客户端测的。跨 AZ +20% 延迟,跨 region 不支持(cache 是 ephemeral, 不跨 region 复制)。
network (egress) — 计量精度
Mortar 计费在 storage signed-URL + API response 两层。SLO 不是延迟而 是计费准确率:
| 维度 | 目标准确率 |
|---|---|
| API response 字节(EgressMeter 中间件) | ≥ 99.9% (内核 socket 字节级精确) |
| OSS signed-URL 字节(projected) | ± 5%(当前仅在签 URL 时按 object size × N-times-signed 估算入账;规划中用 OSS access-log → 账本对账管道把误差收到 ±1%,见 roadmap.md) |
| OSS direct download via CDN | ± 5%(同上) |
对账管道上线后 reconcile job 把 projected 跟实际访问日志对齐,超 5% 偏差自 动告警。月底账单按 reconciled 数据出账,不按 projected。当前上线 阶段仅按 projected 出账(接受 ±5% 误差),等真实流量后再上对账管道。
CDN + cross-region
| 维度 | 国内 | 海外 |
|---|---|---|
| OSS download via CDN p95 | 80 ms | 250 ms |
| Mortar API p95 (北京客户端 → 北京 region) | 30 ms | n/a |
| Mortar API p95 (上海 → 北京 region) | 80 ms | n/a |
| Mortar API p95 (北京 → 新加坡,规划中) | TBD | 200 ms |
多 region 上线后 SLO 重新对齐 (每 region 独立测点,国际化 client 命中 最近 region 时按本地 SLO 计算)。
测点 + 监控
- 客户端探针:阿里云 SLS Probe 每 60 秒 ping 关键 endpoint,从 北京 / 上海 / 深圳 / 新加坡 ECS 起。
- synthetic 流量:每个 primitive 每 5 分钟模拟一次真实 workflow (signup → insert → query → upload → invoke → cleanup).
- 真实流量:所有 API 走 EgressMeter + LatencyHistogram → SLS Metric Store,每分钟 aggregate。
- 告警:超过 SLO 数字 10% 即 page AI 监控员(见
monitoring-ai-employee.md), AI 判定 → autofix / page 人。
SLO breach 处理
- AI 监控员 30 秒内 trigger(synthetic / real metric 之一突破)
- AI 拉日志 + 最近 deploy + 上游云厂家 status page,分类 false-alarm / incident
- Incident:post Slack/飞书 + 创建 incident ticket + page 值班
- 月底 incident 汇总 → 算月度 SLA → 触发 credit-back(enterprise) 或 status report (beta)
Enterprise — 升级 SLO
Enterprise 客户可以买 99.95% 或 99.99%。每升一级要:
- 99.95%: 跨 AZ 多 RDS + 跨 AZ Redis + 自动 failover 测试每周
- 99.99%: 跨 region active-active + 数据 sync replication + 跨 cloud failover
价格约 +50% / +200% baseline。
Public SLA report
正式发布起每月发布。