The LLM is unavailable.Investigate with fundamentals.
ArchitectureIntermediate

API latency went from 100 ms to 4 seconds

Page: GET /orders/:id p50 latency 108 ms → 4.1 s, starting 14:20 — ten minutes after release 2024.31 reached 100% of pods. Gateway 504s went from 0.2% to 3.1% of all requests, not just order lookups.

What you know

  • orders-svc is a thread-per-request service: 8 replicas, 200 worker threads each, one Postgres pool of 20 connections per replica.
  • Release 2024.31 added a "delivery ETA" line to the order detail page. The ETA comes from a carrier API (carrier-api.example) that the team had not integrated before.
  • The carrier’s status page has shown "degraded performance" since 13:50 — thirty minutes before the deploy.
  • Available: RED metrics per endpoint, container CPU/memory, Postgres dashboards, and OpenTelemetry traces sampled at 10%.
  • Rolling back is possible but the on-call wants to know *why* before deciding, because the ETA feature is contractually due this week.
# trace 4d1f…  GET /orders/88213   total 4 112 ms   status 200
span                                            start      dur
orders-svc  GET /orders/:id                     0 ms       4 112 ms
  auth.verify                                   1 ms       3 ms
  pg  SELECT … FROM orders WHERE id = $1        5 ms       4 ms
  pg  SELECT … FROM order_items WHERE …         10 ms      6 ms
  eta.lookup                    (new in 2024.31) 17 ms     3 862 ms
    http POST carrier-api.example/v2/eta        18 ms      3 860 ms   200
  render                                        3 881 ms   2 ms

# orders-svc, one replica, 14:10 → 14:30
                            14:10   14:15   14:20   14:25   14:30
p50 latency (ms)              108     112     980   3 900   4 100
worker threads busy (/200)     14      15     140     200     200
requests queued                 0       0      12     310     640
CPU (cores)                   0.6     0.6     0.5     0.4     0.4
pg pool in use (/20)            3       3       3       4       3
outbound conns to carrier       0       0     138     200     200

Investigate

For each area: first say why you would check it (reveal the reasoning), then look. Commit to a root cause when you are confident.

Recent deploy diff
Database
CPU and memory
The trace of one slow request
The HTTP client configuration
Worker threads and connection pools
DNS and TLS to the carrier