← Back to blog
Solution 4 min read 炬鲸团队

Keeping E-commerce Stable During Promotions: Tracing, Alerting, and Capacity Planning

A stability playbook for e-commerce promotions: build baselines from history, find bottlenecks with load tests, locate slow nodes with tracing, tier alerts so on-call isn't drowned, and turn the retrospective into next year's baseline.

Why promotions are hard to keep stable

A promotion isn’t just doubled traffic. It’s pulsed traffic: in the first 60 seconds of a flash sale, the order endpoint’s QPS can jump from 2,000 to 200,000 and then fall back. That kind of pulse hits database connection pools, caches, and message queues harder than steady high load does. And during a promotion you can’t casually restart or roll back — the window for fixing a failure is measured in minutes, not hours. Observability is what buys you those minutes back.

Before the event: capacity planning and a load-test baseline

Before the event, an observability platform turns “I think we can take it” into “the data says so.” Three steps:

  1. Build a baseline. Use the past month of history to compute P99 latency, peak QPS, and error rate for every core endpoint, saved as a baseline report.
  2. Benchmark against it. Replay production traffic or ramp up a load tool, watch each service’s resource levels and latency knee, and find whether the bottleneck is the database, the cache, or a downstream.
  3. Size capacity. Combine expected peak QPS with per-node knee points to work out how many instances each service needs, plus a 20% margin for the unexpected.

In OBSERVE you can set SLOs on core endpoints, then watch the error-budget burn during load tests to surface bottlenecks before they surface on launch day.

During the event: tracing to find the slow node

The scariest thing on the day itself is “everything is slower but nobody knows where.” One order passes through a dozen services — gateway, order, inventory, payment, logistics — and a wobble in any one of them slows the whole chain.

OBSERVE’s tracing stitches the full call chain of a single order together, with each span recording latency, status, and downstream calls. When troubleshooting, sort by latency to find the slowest traces, then drill into the specific span — is it a slow Redis query in the inventory service, or a downstream timeout at the payment gateway? Minutes, not hours, and you stop blaming the wrong service.

Pair this with latency alerts on core chains: when P99 exceeds a threshold for three minutes, OBSERVE fires an alert bundled with slow-trace samples, so the on-call engineer opens the alert and sees the scene immediately.

During the event: tier your alerts so nobody gets drowned

Alert volume spikes during a promotion. If everything pages the same person, they’ll go numb fast. Three tiers work well:

  • P1 — page directly. Core-chain error rate or SLO burn rate over the line; handle immediately.
  • P2 — ticket. Non-core wobble or resource usage over 80%; handle during the day.
  • P3 — log only. Slow queries and one-off blips, reviewed in the retrospective.

OBSERVE’s alert grouping can merge many alerts from a single root cause into one, with the list of affected services attached — no more “one database died, dozens of alerts spam the screen” while the real page is buried in noise.

Degradation plan: observability for when things go wrong anyway

No matter how well you prepare, something will break. The promotion playbook should include a degradation plan, and observability should drive it: decide ahead of time which non-core features you'll turn off first — recommendations, coupons, wish lists — and at what threshold. Wire those thresholds to alerts, so the decision to shed load is triggered by data, not by a panicked engineer at 3 a.m.

A simple way to do this in OBSERVE is to tag services as core or non-core, then set a rule that pages when a core service's error budget burns fast and a non-core service's latency crosses a high threshold — the page includes the suggested degradation order.

After the event: retrospective and next year’s baseline

After the event, pull all the day’s alerts, slow traces, and capacity data for a review: which alerts were false positives, which bottlenecks you didn’t see coming, which capacity estimates were off. Fold those conclusions into next year’s baseline. That’s how observability compounds year over year, instead of starting from zero every time.
If you run promotions several times a year, store the baselines and the retrospective notes in one place and compare year-over-year — the trends are what tell you whether the platform is actually getting more stable, or just generating more alert noise.