Multi-region edge performance
A CDN is worth having because it serves users from nearby. A user in Frankfurt should get responses from a Frankfurt edge node, not one in Virginia. A load test from a single cloud region cannot check this. If your Virginia-based test shows 15 ms TTFB, you still know nothing about what a user in Sydney sees. MaxoPerf multi-region load tests send traffic from several geographic locations at once. You measure edge latency as each region sees it, and you catch routing or caching problems that only appear when traffic comes from a particular geography.
Before you start
Section titled “Before you start”- Confirm your MaxoPerf workspace has access to at least two cloud load locations. Check the Locations dropdown in the Configuration tab of any test.
- Run a smoke test from a single region first. It validates the test file and confirms the CDN URL is reachable.
- Review Cache hit/miss testing to learn how to assert on cache state. Add cache-header assertions to multi-region tests so you can see whether edge nodes in each region serve from cache.
What to expect from per-region edge latency
Section titled “What to expect from per-region edge latency”CDN edge latency depends on:
- Geographic distance to the nearest edge node: a user 50 km from the edge sees < 5 ms RTT, and one 5,000 km away may see 50–80 ms.
- Cache state: a cache miss from any location adds origin RTT on top of edge RTT.
- HTTP version: HTTP/2 and HTTP/3 connection reuse cuts per-request overhead for later requests from the same VU.
- Asset size: large assets (> 1 MB) vary more in TTFB across regions because bandwidth differs.
Typical healthy CDN TTFB by region pair (cached, small assets):
| Region to edge distance | Expected TTFB |
|---|---|
| Same continent, major metro | 5–20 ms |
| Cross-continent (e.g. EU → North America) | 30–80 ms |
| Transcontinental (e.g. EU → Asia Pacific) | 60–150 ms |
If your measured TTFB is well above these ranges, the nearest edge is not serving the traffic. Investigate DNS routing or CDN PoP configuration.
Step by step in MaxoPerf
Section titled “Step by step in MaxoPerf”-
Upload a test file that targets your CDN URL. The test file does not need to specify locations. MaxoPerf sets the location at the runner level, not at the scenario level.
execution:- concurrency: 100ramp-up: 1mhold-for: 5mscenario: cdn-edge-testscenarios:cdn-edge-test:default-address: https://cdn.example.comrequests:- label: js-bundleurl: /static/app.jsmethod: GETassert:- equals:subject: http-codevalue: '200'- label: hero-imageurl: /static/hero.webpmethod: GETassert:- equals:subject: http-codevalue: '200' -
Open the Configuration tab of the test. Under Locations, click Add location to add a second and third region.
Common multi-region setups for CDN testing:
us-east-1+eu-west-1: transatlantic coverageus-east-1+ap-southeast-1: Americas + Asia Pacificeu-west-1+ap-southeast-1+us-east-1: three-continent coverage
Set the weight (percentage of total VUs) for each location. For a symmetric comparison, use equal weights. To match the user distribution of your real traffic, weight by region share.
-
Save and run the test. The run starts runners in each region at the same time. Open the run detail.
-
Use the Locations filter in the run overview to view per-region metrics. Select one region at a time to see throughput and latency for that region alone.
-
Compare p95 TTFB across regions. Investigate any difference greater than 20 % between regions. Check:
- Whether both regions resolve to nearby edge nodes (use
digornslookupfrom each region’s IP range). - Whether one region produces more cache misses (higher
Age: 0rate, assertion failures onX-Cache: HIT). - Whether one region has consistently higher error rates. That may point to a CDN PoP issue or a firewall rule blocking that source IP range.
- Whether both regions resolve to nearby edge nodes (use
-
Check the Runners tab to confirm that runners in all regions are active and carry proportional VU counts.
Identifying region-specific cache issues
Section titled “Identifying region-specific cache issues”Sometimes a CDN serves a cache hit in one region and a miss in another. Common causes:
- Edge node isolation: each geographic PoP keeps its own cache. An asset popular in Europe may be warm in Frankfurt but cold in Singapore.
- DNS failover routing: if your CDN has routing rules, traffic from one region may go to a farther PoP than expected.
- Shield configuration per region: if your CDN’s origin shield covers only some regions, the other regions may see higher miss rates.
To detect this, add X-Cache header assertions to your test and use the MaxoPerf Log tab to see which regions produce assertion failures:
scenarios: cdn-edge-test: requests: - label: js-bundle url: /static/app.js method: GET assert: - contains: subject: headers value: 'HIT' # fails for cold-cache regionsFilter assertion failures by runner location in the Log tab to find the region with cache misses.
Verify your multi-region test is working
Section titled “Verify your multi-region test is working”Before drawing conclusions, confirm:
- All expected regions appear in the Runners tab with
Runningstatus. - VU counts in the Runners tab are proportional to the configured weights.
- The Locations filter in the Overview tab shows distinct per-region charts.
- p95 latency differs between regions by an amount that fits the geographic distance (for a properly distributed CDN, intercontinental pairs differ by at least 20–40 ms).
If two distant regions show identical TTFB values, both may resolve to the same CDN PoP. Investigate DNS geo-routing.
Do / don’t
Section titled “Do / don’t”Do:
- Use equal VU weights when your goal is a fair per-region latency comparison.
- Warm the cache from all regions before measuring steady-state edge performance.
- Check the Runners tab to confirm all regions are active before the test ends.
Don’t:
- Infer global CDN performance from a single-region test. It only tells you about that one PoP.
- Run multi-region tests against an origin before you verify its capacity. If the CDN is cold in several regions at once, you are in effect running an origin load test.
- Chase inter-region latency differences below 10 ms for cached small assets. They are normal PoP variation and need no action.
Where to go next
Section titled “Where to go next”- TTFB and asset delivery: the latency components behind per-region differences.
- Cache hit/miss testing: verify each region’s cache state during the multi-region run.
- Origin shield and offload testing: how shield tiers affect per-region miss rates.
- Cookbook: multi-region distributed load: the general multi-region load recipe.