Mortar Performance SLO
The Service Level Objectives the Mortar team commits to + monitors for the launch. This doc holds the SLO numbers we expose to customers, not internal stretch goals. Falling below these triggers SLA refunds (the enterprise pack has the detailed mechanism).
Overall availability
| Metric | Beta (Mortar Cloud beta) | GA | Enterprise |
|---|---|---|---|
| Uptime (monthly) | 99.5% | 99.9% | 99.95% / 99.99% (tier upcharge) |
| RPO (data loss) | 5 min | 1 min | 0 (synchronous replication) |
| RTO (recovery time) | 30 min | 5 min | < 1 min (BYOC + cross-region) |
Beta intentionally targets 99.5% — early-beta customer acceptance, plus a window for ops learning. We’ll raise to 99.9% after 30 real days of runtime in Q1.
Per-primitive latency SLO
Measurement points: same-VPC client inside the Beijing / Shanghai region calling the Mortar API. Cross-region + cross-cloud numbers are listed separately.
database primitive — Postgres operations
| Operation | 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 |
| Complex join (3 tables) | 25 ms | 80 ms | 200 ms |
p99 over 200 ms triggers an alert.
storage primitive — OSS operations
| Operation | 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 |
Use multipart for large file uploads; for downloads, signed URLs through the CDN are recommended.
compute primitive — function invoke
| Operation | p50 | p95 | p99 | Notes |
|---|---|---|---|---|
| Warm invoke (recent) | 50 ms | 200 ms | 500 ms | Function idle pool cached |
| Cold start (Aliyun FC) | 800 ms | 1.5 s | 3 s | 100% cold start — real workloads use idle |
| Cold start (Tencent SCF) | 1.2 s | 2.5 s | 5 s | SCF cold start is slower than FC |
Slow cold starts are a common FaaS issue, documented transparently; reserved instances (planned) eliminate them.
cache primitive — Redis operations
| Operation | 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 |
Measured on Tair (Aliyun Redis) in cn-hangzhou with a same-VPC client. Cross-AZ adds ~20% latency; cross-region is not supported (cache is ephemeral and doesn’t cross-region replicate).
network (egress) — metering accuracy
Mortar bills in two layers: storage signed-URL + API response. The SLO is not latency but billing accuracy:
| Dimension | Accuracy target |
|---|---|
| API response bytes (EgressMeter middleware) | ≥ 99.9% (kernel socket byte-level precise) |
| OSS signed-URL bytes (projected) | ± 5% (currently estimates at mint-time by object_size × N-times-signed; planned OSS access-log → ledger reconciliation pipeline to tighten this to ±1%, see roadmap.md) |
| OSS direct download via CDN | ± 5% (same as above) |
Once the reconcile job ships it aligns projected vs actual access logs (auto-alert on >5% deviation), and month-end bills are issued against reconciled data, not projected. Until then (current launch window) bills are issued against projected with the ±5% tolerance above; the reconciliation pipeline is gated on real traffic appearing.
CDN + cross-region
| Dimension | Domestic | Overseas |
|---|---|---|
| OSS download via CDN p95 | 80 ms | 250 ms |
| Mortar API p95 (Beijing client → Beijing region) | 30 ms | n/a |
| Mortar API p95 (Shanghai → Beijing region) | 80 ms | n/a |
| Mortar API p95 (Beijing → Singapore, planned) | TBD | 200 ms |
After multi-region ships, SLOs are realigned (each region has its own measurement point; international clients hitting the nearest region are evaluated against the local SLO).
Measurement + monitoring
- Client probe: Aliyun SLS Probe pings key endpoints every 60s from ECS in Beijing / Shanghai / Shenzhen / Singapore.
- Synthetic traffic: every 5 minutes simulates a real workflow for each primitive (signup → insert → query → upload → invoke → cleanup).
- Real traffic: every API goes through EgressMeter + LatencyHistogram → SLS Metric Store, aggregated per minute.
- Alerts: 10% over an SLO pages the AI monitor (see
monitoring-ai-employee); the AI classifies → autofix / page a human.
SLO breach handling
- AI monitor triggers within 30 seconds (synthetic / real metric breaches).
- AI pulls logs + recent deploys + upstream cloud-vendor status page, classifies false-alarm vs incident.
- Incident: posts to Slack/Lark + creates an incident ticket + pages the on-call rotation.
- Month-end: incident summary → monthly SLA → triggers credit-back (enterprise) or status report (beta).
Enterprise — upgraded SLO
Enterprise customers can buy 99.95% or 99.99%. Each tier requires:
- 99.95%: cross-AZ multi-RDS + cross-AZ Redis + weekly auto-failover test
- 99.99%: cross-region active-active + synchronous data replication + cross-cloud failover
Pricing: roughly +50% / +200% baseline.
Public SLA report
Published monthly starting at launch.