Skip to main content

AspNetBenchmark

AspNetBenchmark is a benchmark developed by MSFT ASPNET team, based on open source benchmark TechEmpower.
This workload has server and client part, on the same test machine. The server part is started as a ASPNET service. The client calls server using open source bombardier binaries.
Bombardier binaries could be downloaded from Github release, or directly compile from source using "go build ."

Workload Metrics

The following metrics are examples of those captured by the Virtual Client when running the AspNetBenchmark workload.

Bombardier output example

The following metrics are examples of those captured during the operations of the AspNetBench workload.

NameExampleUnitDescription
Latency Max178703microsecondASP.NET Web Request latency (max)
Latency Average8270.807963429836microsecondASP.NET Web Request latency (avg)
Latency Stddev6124.356473307014microsecondASP.NET Web Request latency (standard deviation)
Latency P506058microsecondASP.NET Web Request latency (P50)
Latency P7510913microsecondASP.NET Web Request latency (P75)
Latency P9017949microsecondASP.NET Web Request latency (P90)
Latency P9523318microsecondASP.NET Web Request latency (P95)
Latency P9935856microsecondASP.NET Web Request latency (P99)
RequestPerSecond Max61221.282458945345Reqs/secASP.NET Web Request per second (max)
RequestPerSecond Average31211.609987720527Reqs/secASP.NET Web Request per second (avg)
RequestPerSecond Stddev6446.822354105378Reqs/secASP.NET Web Request per second (standard deviation)
RequestPerSecond P5031049.462844Reqs/secASP.NET Web Request per second (P50)
RequestPerSecond P7535597.436614Reqs/secASP.NET Web Request per second (P75)
RequestPerSecond P9039826.205746Reqs/secASP.NET Web Request per second (P90)
RequestPerSecond P9541662.542962Reqs/secASP.NET Web Request per second (P95)
RequestPerSecond P9948600.556224Reqs/secASP.NET Web Request per second (P99)

Packaging and Setup

The following section covers how to create the custom Virtual Client dependency packages required to execute the workload and toolset(s). This section is meant to provide guidance for users that would like to create their own packages with the software for use with the Virtual Client. For example, users may want to bring in new versions of the software. See the documentation on 'Dependency Packages' for more information on the concepts.

  1. VC installs dotnet SDK
  2. VC clones AspNetBenchmarks github repo
  3. dotnet build src/benchmarks project in AspNetBenchmarks repo
  4. Use dotnet to start server
dotnet <path_to_binary>\Benchmarks.dll --nonInteractive true --scenarios json --urls http://localhost:5000 --server Kestrel --kestrelTransport Sockets --protocol http --header "Accept: application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7" --header "Connection: keep-alive" 
  1. Use bombardier to start client
bombardier-windows-amd64.exe -d 15s -c 256 -t 2s --fasthttp --insecure -l http://localhost:5000/json --print r --format json