№ 01 Under load

The day the crowd arrives

This page is about the traffic you wanted. A launch, a mention, or a good day can send more visitors at once than a steady climb ever would. Here is what runs out first, and how to find your own number before the day it matters.

№ 02 Two kinds of busy

Two kinds of busy, and only one is a plan

Both of them are traffic you wanted. A third kind is not.

  • A steady climb

    More visitors, week over week, as the audience genuinely grows. There is time to watch it and plan a move.

  • A spike that simply arrives

    A launch, a mention, or a good day. The same traffic you wanted, arriving all at once instead of gradually.

Not this page

A volumetric flood

A sudden spike of requests aimed at knocking the site offline, not at reading it. Absorbed at the edge network, before it reaches a static site's storage or a dedicated instance.

This page assumes the traffic is real. Everything below is about a crowd that came to read you. Under attack owns the other half.

№ 03 What runs out first

What runs out first

Transfer against a fixed allowance, then whatever Monitoring already watches for a capacity signal.

  • Transfer

    Counted against the plan's own fair-use allowance — Static Starter (~100 GB transfer/mo), Static Pro (~500 GB transfer/mo).

  • Disk and memory headroom

    Usage crossing a threshold set well ahead of the point it would actually cause an outage

  • Connections, replication, and backup completion

    A connection pool running out, replication falling behind, or a nightly backup that never reported success

  • Queue liveness and scheduled-job completion

    A queue backing up with nothing consuming it, or a scheduled job that starts but doesn't finish inside its window

№ 04 By hosting shape

A static site and a dedicated instance fail differently

The fact this site has never published before this page.

  • Static Static Pro

    The edge network answers the crowd. Static Pro and its siblings have no server to queue behind — the only real limit is transfer, and transfer is priced flat.

  • Dedicated Dedicated M

    A single Dedicated M instance (2 vCPU · 2 GB RAM · 60 GB SSD · static IP) has a knee: it serves normally, then it queues, then a request waits long enough to fail. Two standing rules keep that knee where it is. A flat rate means fixed, known capacity. Nothing on this platform grows itself in the background and bills you for it afterwards. A single dedicated instance is one instance. Splitting a workload across more than one is a Custom quote, not a setting to switch on. Both rules are in § 10 as well.

  • Custom Custom

    A bespoke stack is sized to the workload at quote time, the same discipline as any other Custom shape.

№ 05 How many visitors is that, really

How many visitors that allowance actually is

Derived from this site's own measured page weight — never a typed-in figure.

PlanAllowanceAt the median pageAt the heaviest page
Static Starter~100 GB transfer/mo6.1 million page views/mo2.9 million page views/mo
Static Pro~500 GB transfer/mo30.4 million page views/mo14.7 million page views/mo

The median page here weighs 17.2 KB; the heaviest, /search, weighs 35.6 KB. Bytes only — one page per view, before images and fonts a real visit would also pull in.

№ 06 The rehearsal

Find your own number before the day

A load test, run against staging, never production.

  1. 1

    Ask for a rehearsal

    Say what you expect — a launch date, an expected crowd size, or just "we want to know before we find out live".

    You

  2. 2

    A load test runs against staging

    A second, standing copy of the same stack, built from the same infrastructure definition as production. Never production — nothing a real visitor would notice.

    CustomHosted

  3. 3

    The knee gets measured

    The point where response times start climbing and errors start appearing, on this workload, on this tier — not a number copied from another customer.

    CustomHosted

  4. 4

    You get the number, and the causes

    What the tier actually holds today, and what showed up first when it did not — see "what the rehearsal finds" below.

    You

Around 45 minutes of your own time end to end — most of it waiting for a result, not doing the work yourself.

№ 07 What the rehearsal finds, and who fixes it

Most causes are a code change, not a bigger box

Most of them are a change to the code. The rest are a rebuild. Each group is labelled below.

Cheaper than a bigger box

CodeHerderEach of these is a fix in the code. You brief it, it ships, and the invoice does not move.

  • An unindexed query

    A slow query run on every page load can look exactly like a compute shortage. Adding the missing index is usually a smaller fix than a bigger tier.

  • An unresized image

    Serving a large photo at a small width burns transfer and memory for no visible gain. Resizing it at build time often does more than moving up a tier would.

  • A background job with no backoff

    A job that retries immediately, over and over, can make the whole instance look short on room. Often the real fix is a short wait between retries.

  • A cache that never gets used

    Recomputing the same answer on every request costs headroom. Caching it once usually saves more than moving up a tier ever would.

When it's genuinely architecture

CustomLabsEach of these is a rebuild, not a briefed change. It is CustomLabs work, quoted on its own.

  • A queue between two services

    When one part of the app has to keep working while another catches up, that is a queue to design, not a bigger instance.

  • A read replica

    When read traffic alone is the bottleneck, a second database built for reads is a rebuild, not a resize.

  • A second region

    Running compute closer to a second cluster of users is a new deployment to design, not a tier to move up to.

Briefing a cause from "Cheaper than a bigger box" is what the Agentic iteration — CodeHerder ($25/mo) add-on covers. The steps below are what happens next.

  1. 1

    The rehearsal names the cause

    The load test returns the thing that gave way first. That is usually a slow query, an oversized image, or a job with no backoff.

    CustomHosted

  2. 2

    It's triaged as a code change, not a resize

    A bigger tier hides a cause like that. A change to the code removes it. Only the cases under "When it's genuinely architecture" need a rebuild.

    CustomHosted

  3. 3

    Briefed as a change

    Written up the same way any other change request is. The iteration add-on is what covers it.

    CustomLabs

  4. 4

    An agent opens the pull request

    The fix lands as a real pull request against the repository, with the test suite run against it.

    CodeHerder

  5. 5

    A human reviews and merges

    Someone reads the diff before it goes anywhere near production — nothing here is auto-applied blind.

    CustomLabs

  6. 6

    It ships through the same pipeline

    The same pipeline that deploys everything else on your stack ships this too — no separate process to babysit.

    CustomHosted

  7. 7

    You're told it's done

    A note confirming what changed and that it merged, in the same shape as every other note on this site.

    CustomHosted

№ 08 On the day

On the day itself

The same watch, the same ladder, and the same rule about not throttling first.

TierWhat countsWhat happens firstWho hears
Auto-handledA known, safe failure with an established fix — a crashed process, a failed health check, a stuck deployRestart, retry, or redeploy the last known-good version, done automaticallyNo one, unless it recurs — it goes in the log, not a message to you
You hear from usSomething that touched the app and needs a person to pick the right response, not just a retryA human looks at it and decides what to do — revert, restore, or a fix in codeYou, in writing, on the same quote channel as everything else — business hours for anything that isn’t urgent
Outage handlingThe site or a core function is down, or badly degraded, for real usersWorked ahead of the routine queueYou, as soon as there is something to say, with priority handling; out-of-hours response is best effort, not a staffed round-the-clock desk
  • No throttling as a first response

    A workload getting close to its headroom gets a conversation, not a rate limit switched on quietly. We talk to you before anything changes.

  • What an emergency move costs in minutes

    Around 20 minutes of your own time, across the same 6 steps described on Scaling — scheduled where there's time to schedule it, done as fast as it can be where there isn't.

  • What it does to the invoice

    The rate is flat, up to the plan's posted fair-use transfer allowance. The allowances themselves are in § 05 above.

№ 09 This site's own numbers

This site's own numbers, as the worked artifact

Every figure below is read from a measured build, not typed in by hand.

Routes measured
87
Routes shipping zero JavaScript
80 of 87, this page included
Median page weight
17.2 KB
Heaviest route
/search, 35.6 KB
№ 10 The honest limits

Said plainly

No requests-per-second promise, no uptime figure, and no "handles N users" claim.

  • No published requests-per-second figure

    How much one tier holds depends entirely on the app running on it. A number that ignored that would be true for nobody in particular — see the rehearsal above for how to find your own.

  • No surge capacity held in reserve

    Capacity does not appear on the day. A flat rate buys the headroom already sized into the tier, not a reserve that switches on when a crowd shows up.

  • No queueing guarantee

    A request that waits too long ends as an error handed back to the visitor, not a queue that holds it indefinitely.

  • No autoscaling

    A flat rate means fixed, known capacity. Nothing on this platform grows itself in the background and bills you for it afterwards.

  • No load balancing across instances

    A single dedicated instance is one instance. Splitting a workload across more than one is a Custom quote, not a setting to switch on.

№ 11 Answers

Under load, answered

The questions that come up right before a launch date.

  1. 01Will my site survive going viral?

    A static site answers a crowd from the edge network, so the honest limit there is transfer, not requests. A dedicated instance has a knee — see "By hosting shape" above for what that means, and the rehearsal for finding yours.

  2. 02What happens on launch day if you have never seen my app under load?

    The same watching Monitoring already runs, plus the escalation ladder reused above. A rehearsal ahead of the day turns "we will see what happens" into a known number instead.

  3. 03Do you throttle us if traffic gets close to a limit?

    A workload getting close to its headroom gets a conversation, not a rate limit switched on quietly. We talk to you before anything changes.

  4. 04Does a traffic spike cost extra?

    The rate is flat, up to the plan's posted fair-use transfer allowance. A bot or scraper counts the same way — see Under attack for that half of the picture.

  5. 05Can you tell me how many concurrent users a tier holds?

    How much one tier holds depends entirely on the app running on it. A number that ignored that would be true for nobody in particular — see the rehearsal above for how to find your own.

  6. 06Can we test this before the actual day?

    Yes — that is what the rehearsal is for. It runs against the standing staging copy, never production, and comes back with the tier's own knee and the fixes it's cheapest to make first. Anything that turns out to be a code change is briefed and ships through the same pipeline as any other change — this is what the Agentic iteration — CodeHerder ($25/mo) add-on covers.

Got a launch date and no idea what happens under real traffic?

Ask for a rehearsal through the same quote channel as any other request — a fix it turns up is Agentic iteration — CodeHerder ($25/mo) work once you're a customer.

Get a quote →