Skip to content

[C#] ServiceStack: Re-Add framework#610

Merged
MDA2AV merged 5 commits intoMDA2AV:mainfrom
Kaliumhexacyanoferrat:service-stack-readd
Apr 23, 2026
Merged

[C#] ServiceStack: Re-Add framework#610
MDA2AV merged 5 commits intoMDA2AV:mainfrom
Kaliumhexacyanoferrat:service-stack-readd

Conversation

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator

Description

Marked as production which is fine I guess, maybe besides the settings for the postgres driver. I will read that up in the rules.


PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run all benchmark tests
/benchmark -f <framework> -t <test> Run a specific test
/benchmark -f <framework> --save Run and save results (updates leaderboard on merge)

Always specify -f <framework>. Results are automatically compared against the current leaderboard.


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk, ghz) are built as self-contained Docker images on first run.

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat self-assigned this Apr 23, 2026
@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

/benchmark -f servicestack --save

@github-actions
Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions
Copy link
Copy Markdown
Contributor

🚀 Benchmark run triggered for servicestack (all tests) with --save. Results will be posted here when done.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: servicestack | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 19,510 734.1% 353MiB NEW NEW
baseline 4096 18,656 1000.1% 308MiB NEW NEW
pipelined 512 14,268 793.7% 194MiB NEW NEW
pipelined 4096 15,140 840.1% 287MiB NEW NEW
limited-conn 512 18,651 1042.8% 250MiB NEW NEW
limited-conn 4096 19,672 611.7% 404MiB NEW NEW
json 4096 22,976 650.3% 434MiB NEW NEW
json-comp 512 16,118 1099.8% 303MiB NEW NEW
json-comp 4096 21,003 647.6% 414MiB NEW NEW
json-comp 16384 22,114 697.9% 514MiB NEW NEW
json-tls 4096 14,116 1190.1% 548MiB NEW NEW
upload 32 403 2958.5% 6.9GiB NEW NEW
upload 256 479 3713.2% 9.3GiB NEW NEW
api-4 256 17,574 374.4% 166MiB NEW NEW
api-16 1024 23,786 801.4% 316MiB NEW NEW
static 1024 362,212 5210.7% 249MiB NEW NEW
static 4096 359,664 5710.9% 472MiB NEW NEW
static 6800 351,745 5980.5% 619MiB NEW NEW
async-db 1024 18,793 721.5% 379MiB NEW NEW
Full log

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.31ms   14.31ms 446.39ms   97.87%
    Req/Sec     5.79k     1.67k   22.78k    79.89%
  1817910 requests in 5.10s, 28.07GB read
Requests/sec: 356424.29
Transfer/sec:      5.50GB
[info] CPU 5802.6% | Mem 455MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.23ms   12.07ms 254.10ms   96.76%
    Req/Sec     5.83k     1.73k   27.70k    83.26%
  1834714 requests in 5.10s, 28.33GB read
Requests/sec: 359664.42
Transfer/sec:      5.55GB
[info] CPU 5710.9% | Mem 472MiB

=== Best: 359664 req/s (CPU: 5710.9%, Mem: 472MiB) ===
[info] saved results/static/4096/servicestack.json
httparena-bench-servicestack
httparena-bench-servicestack

==============================================
=== servicestack / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    52.00ms  165.90ms   1.74s    96.25%
    Req/Sec     3.53k     2.31k   19.81k    72.61%
  1058573 requests in 5.10s, 16.35GB read
  Socket errors: connect 0, read 0, write 0, timeout 219
Requests/sec: 207582.50
Transfer/sec:      3.21GB
[info] CPU 5504.8% | Mem 535MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    39.75ms  147.43ms   1.79s    96.83%
    Req/Sec     5.53k     2.01k   24.46k    77.32%
  1791783 requests in 5.10s, 27.67GB read
Requests/sec: 351340.95
Transfer/sec:      5.43GB
[info] CPU 6024.5% | Mem 553MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    19.03ms   25.79ms 493.06ms   98.18%
    Req/Sec     5.69k     1.85k   24.99k    81.96%
  1793887 requests in 5.10s, 27.70GB read
Requests/sec: 351745.24
Transfer/sec:      5.43GB
[info] CPU 5980.5% | Mem 619MiB

=== Best: 351745 req/s (CPU: 5980.5%, Mem: 619MiB) ===
[info] saved results/static/6800/servicestack.json
httparena-bench-servicestack
httparena-bench-servicestack

==============================================
=== servicestack / async-db / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.2
  Target:    localhost:8080/
  Threads:   64
  Conns:     1024 (16/thread)
  Pipeline:  1
  Req/conn:  25
  Templates: 5
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   72.16ms   68.00ms   114.30ms   171.60ms   381.70ms

  139128 requests in 10.00s, 138897 responses
  Throughput: 13.89K req/s
  Bandwidth:  54.49MB/s
  Status codes: 2xx=138897, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 138897 / 138897 responses (100.0%)
  Reconnects: 4961
  Per-template: 27954,27760,27731,27726,27726
  Per-template-ok: 27954,27760,27731,27726,27726
[info] CPU 1295.9% | Mem 357MiB

[run 2/3]
gcannon v0.5.2
  Target:    localhost:8080/
  Threads:   64
  Conns:     1024 (16/thread)
  Pipeline:  1
  Req/conn:  25
  Templates: 5
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   66.32ms   62.20ms   108.10ms   158.40ms   197.90ms

  154645 requests in 10.00s, 154645 responses
  Throughput: 15.46K req/s
  Bandwidth:  60.66MB/s
  Status codes: 2xx=154645, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 154645 / 154645 responses (100.0%)
  Reconnects: 5799
  Per-template: 30933,31132,30902,30804,30874
  Per-template-ok: 30933,31132,30902,30804,30874
[info] CPU 1159.1% | Mem 377MiB

[run 3/3]
gcannon v0.5.2
  Target:    localhost:8080/
  Threads:   64
  Conns:     1024 (16/thread)
  Pipeline:  1
  Req/conn:  25
  Templates: 5
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   54.46ms   50.80ms   88.60ms   130.00ms   159.90ms

  187932 requests in 10.00s, 187932 responses
  Throughput: 18.79K req/s
  Bandwidth:  73.75MB/s
  Status codes: 2xx=187932, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 187931 / 187932 responses (100.0%)
  Reconnects: 7158
  Per-template: 37561,37730,37679,37469,37492
  Per-template-ok: 37561,37730,37679,37469,37492
[info] CPU 721.5% | Mem 379MiB

=== Best: 18793 req/s (CPU: 721.5%, Mem: 379MiB) ===
[info] input BW: 1.25MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/servicestack.json
httparena-bench-servicestack
httparena-bench-servicestack
[info] skip: servicestack does not subscribe to crud
[info] skip: servicestack does not subscribe to baseline-h2
[info] skip: servicestack does not subscribe to static-h2
[info] skip: servicestack does not subscribe to baseline-h2c
[info] skip: servicestack does not subscribe to json-h2c
[info] skip: servicestack does not subscribe to baseline-h3
[info] skip: servicestack does not subscribe to static-h3
[info] skip: servicestack does not subscribe to gateway-64
[info] skip: servicestack does not subscribe to gateway-h3
[info] skip: servicestack does not subscribe to production-stack
[info] skip: servicestack does not subscribe to unary-grpc
[info] skip: servicestack does not subscribe to unary-grpc-tls
[info] skip: servicestack does not subscribe to stream-grpc
[info] skip: servicestack does not subscribe to stream-grpc-tls
[info] skip: servicestack does not subscribe to echo-ws
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

Road to 🍆

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat marked this pull request as ready for review April 23, 2026 09:45
@MDA2AV
Copy link
Copy Markdown
Owner

MDA2AV commented Apr 23, 2026

let's find out

@MDA2AV MDA2AV merged commit 7ad4005 into MDA2AV:main Apr 23, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants