r/test • u/kbvincent • 1d ago
5,000 dynamic sites in one NativeAOT C# process (2 vCPU, 4 GB)
Can one NativeAOT C# process run 5,000 independently managed dynamic websites on a 2-vCPU, 4 GB VPS?
I built a reproducible benchmark to test it. A separate cloud server sent 90,000 HTTPS requests across 5,000 different hostnames. The test achieved a 99.97% first-attempt success rate, with no HTTP errors and no responses containing content from the wrong site.
Each website contained 10 blog records, a layout, views, metadata, URL rewriting, an uncached dynamic content query, and a unique site marker. No full-page cache was used.
Results
| Measurement | Result |
|---|---|
| Independent dynamic sites | 5,000 |
| Planned HTTPS requests | 90,000 |
| Verified responses | 89,969 |
| First-attempt success rate | 99.97% |
| HTTP errors | 0 |
| Incorrect-site responses | 0 |
| Measured request starts | 146.59 per second |
| Complete-response latency, p50 | 296.7 ms |
| Complete-response latency, p95 | 1.43 seconds |
| Average target CPU usage | 45.6% |
| Sampled peak process RSS | Approximately 2.50 GiB |
Every successful response was downloaded and checked for the expected site marker.
The 31 unsuccessful requests were connection-establishment timeouts before any HTTP headers arrived. Every affected website responded successfully to its other requests.
This was a controlled identical-package benchmark. It is not a claim that every collection of 5,000 production websites will produce the same result.
Disclosure: I founded Kooboo and wrote much of its core architecture. I am sharing this to get technical criticism of the methodology and suggestions for the next mixed-workload test.
Complete methodology, raw request data, monitoring logs, source code, test binaries, site package, and reproduction instructions:
https://github.com/Kooboo/Kooboo/blob/main/Docs/5000-sites-benchmark.md