Skip to main content

ASP.NET Benchmarks

The ASP.NET benchmarks measure the throughput and latency of ASP.NET Kestrel web applications under sustained HTTP load. The workloads use a client-server architecture where the server runs an ASP.NET application and the client generates HTTP requests using various workload generators including Bombardier and Wrk.

Two server workloads are supported:

  • TechEmpower JSON Serialization
    Based on the ASP.NET Benchmarks project (derived from the TechEmpower framework), the server exposes a /json endpoint that serializes a simple JSON object. Supports Bombardier and Wrk as client load generators.
  • OrchardCore CMS
    Runs the OrchardCore content management system with a Blog recipe, benchmarked with Wrk against the /about endpoint.

Both server configurations support CPU core affinity via the BindToCores and CoreAffinity parameters, allowing the server process to be pinned to specific CPU cores for controlled performance measurement.

What is Being Measured?

The client tools (Bombardier, Wrk or Wrk2) generate concurrent HTTP requests against the ASP.NET server and capture latency percentile distributions and throughput statistics.

TechEmpower JSON Serialization

The server exposes a /json endpoint that serializes a simple JSON object. This scenario measures raw HTTP request processing performance of the Kestrel server with minimal application logic overhead.

Workload Metrics

The following metrics are examples of those captured by the Virtual Client when running the ASP.NET benchmark workloads.

Bombardier Metrics

The following metrics are emitted when the 'Bombardier' workload generator is used.

NameExample ValueUnitDescription
Latency Average133.3698688millisecondsAverage HTTP response latency
Latency Max7123.06304millisecondsMaximum HTTP response latency
Latency P5083.39392millisecondsHTTP response latency (50th percentile)
Latency P75160.14336millisecondsHTTP response latency (75th percentile)
Latency P90286.4128millisecondsHTTP response latency (90th percentile)
Latency P95367.4112millisecondsHTTP response latency (95th percentile)
Latency P99637.534208millisecondsHTTP response latency (99th percentile)
RequestPerSecond Avg32768.449018Reqs/secASP.NET Web Requests per second (average)
RequestPerSecond Stddev6446.822354105378Reqs/secASP.NET Web Requests per second (standard deviation)
RequestPerSecond P5031049.462844Reqs/secASP.NET Web Requests per second (P50)
RequestPerSecond P7535597.436614Reqs/secASP.NET Web Requests per second (P75)
RequestPerSecond P9039826.205746Reqs/secASP.NET Web Requests per second (P90)
RequestPerSecond P9541662.542962Reqs/secASP.NET Web Requests per second (P95)
RequestPerSecond P9948600.556224Reqs/secASP.NET Web Requests per second (P99)

Wrk Metrics

The following metrics are emitted when the 'Wrk' workload generator is used.

NameExample ValueUnitDescription
latency_p501.427millisecondsHTTP response latency (50th percentile)
latency_p751.982millisecondsHTTP response latency (75th percentile)
latency_p902.683millisecondsHTTP response latency (90th percentile)
latency_p993.960millisecondsHTTP response latency (99th percentile)
latency_p99_96.930millisecondsHTTP response latency (99.9th percentile)
latency_p1009.770millisecondsHTTP response latency (100th percentile)
requests/sec16305.17requests/secAggregate throughput
transfers/sec20.01megabytes/secData transfer rate