We host it, and have since 2012
Not a site we built and handed to somebody else’s server. For fourteen years we have run the infrastructure, which means capacity for the night is our decision to get right rather than a request we file with a vendor.
Government · Elections
Public election information for Anderson County, Tennessee. Quiet for eleven months, then a few hours carrying more traffic than the rest of the year — on a night when being unreachable is not a performance problem, it is a public trust problem. We have run it since 2012, across 23 election cycles, without losing a night.
The traffic shape
This is the whole engineering problem in one picture. Nobody schedules an election night’s curiosity, so the capacity has to be there before anyone asks for it.
| Hour | Hits |
|---|---|
| 6a | 20,000 |
| 7a | 35,000 |
| 8a | 45,000 |
| 9a | 50,000 |
| 10a | 55,000 |
| 11a | 55,000 |
| 12p | 60,000 |
| 1p | 60,000 |
| 2p | 65,000 |
| 3p | 70,000 |
| 4p | 85,000 |
| 5p | 120,000 |
| 6p | 180,000 |
| 7p | 260,000 |
| 8p | 520,000 |
| 9p | 640,000 |
| 10p | 430,000 |
| 11p | 200,000 |
| 12a | 90,000 |
| 1a | 40,000 |
| Total | 3,080,000 |
Divide the hits by the visitors and you get roughly a hundred requests each. That is not a hundred images on a page — it is people reloading. Somebody watching a close race refreshes the same results page every minute or two for an hour, and every one of those reloads is a request somebody has to answer.
Which is exactly why caching is the lever rather than a bigger server. If the results page is generated once and then served from cache to everyone who asks in the next sixty seconds, that hundred requests costs almost nothing. If it is regenerated from the database each time, the same night takes the site down.
A store that is briefly slow loses a sale, which is measurable and recoverable. Public election information that cannot be reached on election night produces a different problem: people conclude something is being withheld. The stakes are reputational and civic, not commercial, and they do not get a second attempt.
That is the reason for the change freeze, the load test, and having somebody actually watching. Not because the technology demands it, but because the consequences of getting it wrong are not the kind you can apologize for afterwards.
The same shape shows up in Smoky Mountains tourism — a holiday weekend behaves remarkably like a results night — and in any ticket release, seasonal booking window, or product launch. We wrote the general version up in keeping an election site up on election night.
The IT side
Not a site we built and handed to somebody else’s server. For fourteen years we have run the infrastructure, which means capacity for the night is our decision to get right rather than a request we file with a vendor.
Every anonymous visitor asking for the same results page is answered from cache rather than by regenerating it. Short TTLs so returns still update, stale-while-revalidate so nobody waits on a regeneration, and cache-key discipline so a stray query string cannot fragment it.
Scaled out horizontally ahead of the night, with health checks that test a real page rather than an open port. Provisioning under load is how a bad night becomes a worse one.
No deployments the week of. Realistic traffic generated against the real pages beforehand, so the ceiling is found while there is still time to raise it.
Monitoring that pages a person, running on Pingura — the monitoring platform we build and sell. On these nights the difference between a two-minute problem and a two-hour one is whether anybody was looking.
The unglamorous year-round work. A TLS certificate expiring in October is a preventable November outage, and it is tracked rather than remembered.
Start here
Election night, a ticket release, a seasonal peak. We would rather plan it months out than hear about it the week of.