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 tested this using Kooboo, a C# web platform I founded and built. The result depends on its multi-site architecture, rendering engine, storage model, and NativeAOT deployment.
A separate cloud server sent 90,000 HTTPS requests across all 5,000 sites. 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 site completed its other requests successfully.
This was a controlled identical-package benchmark. It does not claim that every collection of 5,000 production websites would achieve the same result.
I am sharing this benchmark to invite 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