# Nobody deployed. Latency doubled anyway.

In a distributed system the service that got slow is rarely the service that broke. The map shows which edge degraded first, and the trace shows how far the wait propagated.

## Two hops from the symptom to the cause

payment-svc@1.4.2 is the release that shipped four hours before the symptom. It holds the path together — the map, the trace and the logs are all filtered to it.

Signal: api-gateway p95 1.9 s · was 0.9 s, no deploy. deploy: payment-svc@1.4.2.

### T+0:00 · map (/service-map) — The map shows a slow edge, not a slow service

api-gateway is the service being paged about, but its own spans are fine. The degraded edge is two hops in: payment-svc to user-db, average up from 12 ms to 210 ms.

### T+1:10 · trace (/traces) — The trace shows the wait, not the work

Open a slow request and the db span is almost all of it. The query itself is 4 ms; the span is 210 ms. The difference is time spent before the query ever ran.

### T+2:40 · logs (/logs) — The logs name the release

Lines from that span read pool wait 206 ms, acquired after 3 attempts. Filter by service.version and they start at 1.4.2 — which raised concurrency without raising the pool.

Pool size raised to match the new concurrency. The p95 edge latency returned to 14 ms without a rollback.

- **2** hops from the page
- **12 → 210 ms** edge latency, before and after
- **98%** of the span was waiting

## What made the cascade readable

### edge latency — Edges carry their own latency

The map measures each caller-callee pair separately, so a dependency that degraded for one caller and not another is visible as one edge, not an average across the service.

### db.statement — A db span is wait plus work

Because the client span wraps acquisition as well as execution, pool starvation shows up as a gap between span duration and query duration instead of hiding inside a single number.

### service.version — No deploy is still a deploy

service.version on every span means the question changes from who deployed to what version is this span from. A four-hour-old release is as findable as a four-minute-old one.

## Related

- [API Performance](https://maple.dev/use-cases/api-performance.md)
- [E-Commerce Observability](https://maple.dev/use-cases/ecommerce-observability.md)
- [Service Catalog & Map](https://maple.dev/features/service-catalog.md)
- [Distributed Tracing](https://maple.dev/features/distributed-tracing.md)
