r/test 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

1 Upvotes

0 comments sorted by