Skip to content

[WIP] Update Ktor with 3.6.0 - #1204

Draft
bjhham wants to merge 9 commits into
MDA2AV:mainfrom
ktorio:release-3-6
Draft

[WIP] Update Ktor with 3.6.0#1204
bjhham wants to merge 9 commits into
MDA2AV:mainfrom
ktorio:release-3-6

Conversation

@bjhham

@bjhham bjhham commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Description

In 3.6.0, we're introducing HTTP/3 support and improving memory allocations in a few places. In anticipation of the release, I thought I'd run an early access build against the HttpArena benchmarks to see how it performs. I'll update this PR with the proper release artifact after it is published.

Fixes

  • See KTOR-9818 Performance improvements for Netty HTTP/3 ktorio/ktor#5822 - our initial implementation was getting pinned to a single thread, so we had to make several changes to the Netty implementation to use multiple ports / load balance over multiple threads. This should take advantage of parallelism in the benchmarks now. There were also a few tweaks that should improve overall throughput.

@github-actions

Copy link
Copy Markdown
Contributor

👋 Heads up! This PR modifies the following frameworks:

@bjhham

bjhham commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor

@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 Results

Framework: ktor | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 882,487 6174.4% 4.8GiB +8.0% -4.0%
baseline 4096 765,151 5782.9% 4.8GiB -6.9% -49.5%
pipelined 512 576,924 4304.4% 10.9GiB -6.9% +2.8%
pipelined 4096 779,993 4536.7% 17.6GiB +33.4% -1.7%
limited-conn 512 679,658 6022.6% 4.7GiB +3.4% ~0%
limited-conn 4096 681,508 5853.0% 4.8GiB +2.4% +9.1%
json 4096 438,315 4407.1% 4.9GiB +10.9% -50.5%
json-comp 512 194,527 6382.3% 4.8GiB +6.4% -2.0%
json-comp 4096 208,377 6312.9% 8.2GiB +8.0% +57.7%
json-comp 16384 210,761 6141.3% 18.4GiB +11.2% +64.3%
json-tls 4096 402,995 4419.7% 5.0GiB +2.8% -46.2%
upload 32 1,712 3129.5% 1.4GiB +12.0% ~0%
upload 256 1,852 4598.4% 1.5GiB +1.0% ~0%
api-4 256 23,889 411.2% 626MiB -15.7% -18.8%
api-16 1024 83,927 1764.2% 1.5GiB +17.3% -25.0%
static 1024 263,198 6185.3% 3.1GiB -7.5% -27.9%
static 4096 267,237 6134.4% 4.2GiB -5.3% -4.5%
static 6800 263,078 6137.7% 5.1GiB -3.9% ~0%
static-tls 1024 194,432 6379.1% 3.2GiB -5.0% -15.8%
static-tls 4096 218,715 6242.1% 5.0GiB -8.2% ~0%
static-tls 6800 212,335 6248.5% 6.0GiB -6.4% ~0%
async-db 1024 115,909 5278.2% 9.2GiB +11.5% -4.2%
crud 4096 191,371 5370.4% 8.3GiB +10.9% +48.2%
fortunes 1024 59,570 5196.7% 13.2GiB +16.7% +76.0%
baseline-h2 256 505,139 5723.8% 30.5GiB -9.6% +2.3%
baseline-h2 1024 489,450 5816.5% 31.2GiB -9.7% +4.0%
static-h2 256 196,884 5905.0% 24.8GiB +3.8% +55.0%
static-h2 1024 182,913 5885.0% 25.8GiB +1.5% +4.5%
baseline-h2c 256 392,305 5621.9% 30.3GiB -4.8% -1.3%
baseline-h2c 1024 394,746 5100.3% 31.4GiB -2.0% +1.0%
baseline-h2c 4096 302,840 5241.0% 31.5GiB +8.2% +1.0%
json-h2c 1024 315,544 4042.7% 27.0GiB +0.4% -4.3%
json-h2c 4096 306,081 4268.5% 28.1GiB +8.2% -6.0%
baseline-h3 64 19,077 154.7% 1.4GiB NEW NEW
static-h3 64 5,525 219.1% 1.5GiB NEW NEW
echo-ws 512 1,024,064 3429.8% 2.5GiB +0.3% ~0%
echo-ws 4096 941,751 3452.9% 7.3GiB -3.9% +10.6%
echo-ws 16384 635,860 3293.9% 15.0GiB -1.5% +1.4%
echo-ws-pipeline 512 11,274,059 3391.7% 9.1GiB +0.5% -15.7%
echo-ws-pipeline 4096 10,939,667 3426.8% 14.9GiB +2.7% +14.6%
echo-ws-pipeline 16384 8,620,591 3288.8% 20.6GiB -2.9% -0.5%
Full log

  56370296 frames sent in 5.00s, 56370296 frames received
  Throughput: 11.27M req/s
  Bandwidth:  75.24MB/s
  WS upgrades: 512
  WS frames:   56370296
  Latency samples: 56370264 / 56370296 responses (100.0%)
[info] CPU 3391.7% | Mem 9.1GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    730us    670us   1.12ms   1.87ms   3.86ms

  56040346 frames sent in 5.00s, 56040346 frames received
  Throughput: 11.21M req/s
  Bandwidth:  74.80MB/s
  WS upgrades: 512
  WS frames:   56040346
  Latency samples: 56040074 / 56040346 responses (100.0%)
[info] CPU 3389.0% | Mem 9.1GiB

=== Best: 11274059 req/s (CPU: 3391.7%, Mem: 9.1GiB) ===
[info] saved results/echo-ws-pipeline/512/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   8.14ms   5.70ms   10.90ms   47.70ms   329.30ms

  38021930 frames sent in 5.00s, 37959946 frames received
  Throughput: 7.59M req/s
  Bandwidth:  50.76MB/s
  WS upgrades: 4096
  WS frames:   37959946
  Latency samples: 37959946 / 37959946 responses (100.0%)
[info] CPU 3667.2% | Mem 14.8GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   6.15ms   5.68ms   8.48ms   15.00ms   41.90ms

  52735724 frames sent in 5.00s, 52676956 frames received
  Throughput: 10.53M req/s
  Bandwidth:  70.41MB/s
  WS upgrades: 4096
  WS frames:   52676956
  Latency samples: 52676940 / 52676956 responses (100.0%)
[info] CPU 3403.8% | Mem 14.8GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.96ms   5.66ms   8.01ms   14.40ms   19.90ms

  54749104 frames sent in 5.00s, 54698336 frames received
  Throughput: 10.94M req/s
  Bandwidth:  73.09MB/s
  WS upgrades: 4096
  WS frames:   54698336
  Latency samples: 54698320 / 54698336 responses (100.0%)
[info] CPU 3426.8% | Mem 14.9GiB

=== Best: 10939667 req/s (CPU: 3426.8%, Mem: 14.9GiB) ===
[info] saved results/echo-ws-pipeline/4096/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   44.82ms   32.00ms   63.20ms   382.80ms   414.20ms

  24373626 frames sent in 5.00s, 24111482 frames received
  Throughput: 4.82M req/s
  Bandwidth:  32.58MB/s
  WS upgrades: 16384
  WS frames:   24111482
  Latency samples: 24111482 / 24111482 responses (100.0%)
[info] CPU 3688.1% | Mem 20.6GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   31.36ms   29.20ms   46.00ms   74.30ms   110.20ms

  40664974 frames sent in 5.00s, 40402830 frames received
  Throughput: 8.08M req/s
  Bandwidth:  54.33MB/s
  WS upgrades: 16384
  WS frames:   40402830
  Latency samples: 40402830 / 40402830 responses (100.0%)
[info] CPU 3411.0% | Mem 20.6GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   29.54ms   27.60ms   42.50ms   65.50ms   89.40ms

  43365103 frames sent in 5.00s, 43102959 frames received
  Throughput: 8.62M req/s
  Bandwidth:  57.93MB/s
  WS upgrades: 16384
  WS frames:   43102959
  Latency samples: 43102959 / 43102959 responses (100.0%)
[info] CPU 3288.8% | Mem 20.6GiB

=== Best: 8620591 req/s (CPU: 3288.8%, Mem: 20.6GiB) ===
[info] saved results/echo-ws-pipeline/16384/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[info] skip: ktor does not subscribe to echo-ws-limited
[info] rebuilding site/data/*.json
[purged stale] zix-grpc.json (zix-grpc)
[purged stale] zix-ws.json (zix-ws)
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor.json - 41 new, 41 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@bjhham

bjhham commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor

@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 Results

Framework: ktor | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 888,521 6039.1% 4.8GiB +8.7% -4.0%
baseline 4096 674,862 5349.0% 9.7GiB -17.9% +2.1%
pipelined 512 687,593 4455.7% 2.7GiB +10.9% -74.5%
pipelined 4096 577,145 4269.8% 9.9GiB -1.3% -44.7%
limited-conn 512 682,637 5791.0% 4.7GiB +3.9% ~0%
limited-conn 4096 696,805 5815.9% 5.0GiB +4.7% +13.6%
json 4096 438,287 4413.0% 6.1GiB +10.9% -38.4%
json-comp 512 193,078 6281.2% 4.5GiB +5.6% -8.2%
json-comp 4096 205,976 6312.1% 5.8GiB +6.7% +11.5%
json-comp 16384 210,279 6127.9% 14.2GiB +11.0% +26.8%
json-tls 4096 412,620 4443.4% 5.8GiB +5.3% -37.6%
upload 32 1,558 3169.7% 1.4GiB +1.9% ~0%
upload 256 1,826 4493.6% 1.5GiB -0.4% ~0%
api-4 256 24,258 409.0% 708MiB -14.3% -8.2%
api-16 1024 83,288 1749.2% 1.6GiB +16.4% -20.0%
static 1024 261,085 6234.3% 3.1GiB -8.3% -27.9%
static 4096 265,163 6109.8% 4.0GiB -6.0% -9.1%
static 6800 266,671 6146.5% 4.7GiB -2.6% -7.8%
static-tls 1024 214,263 6348.2% 3.2GiB +4.7% -15.8%
static-tls 4096 218,538 6121.2% 4.8GiB -8.3% -4.0%
static-tls 6800 219,233 5888.4% 6.0GiB -3.4% ~0%
async-db 1024 115,649 5209.7% 13.4GiB +11.3% +39.6%
crud 4096 193,753 5364.2% 8.0GiB +12.3% +42.9%
fortunes 1024 58,028 5208.2% 7.3GiB +13.7% -2.7%
baseline-h2 256 434,495 5732.7% 30.4GiB -22.2% +2.0%
baseline-h2 1024 439,279 5814.5% 31.2GiB -18.9% +4.0%
static-h2 256 134,094 6246.4% 20.5GiB -29.3% +28.1%
static-h2 1024 184,142 5808.8% 24.7GiB +2.2% ~0%
baseline-h2c 256 427,063 5470.7% 30.9GiB +3.6% +0.7%
baseline-h2c 1024 499,811 4627.4% 30.0GiB +24.0% -3.5%
baseline-h2c 4096 264,224 5173.9% 31.4GiB -5.6% +0.6%
json-h2c 1024 318,853 4157.6% 27.3GiB +1.5% -3.2%
json-h2c 4096 300,744 4272.1% 29.1GiB +6.4% -2.7%
baseline-h3 64 338,966 4676.1% 3.0GiB NEW NEW
static-h3 64 37 2397.4% 592MiB NEW NEW
echo-ws 512 1,022,991 3426.3% 2.6GiB +0.2% +4.0%
echo-ws 4096 987,448 3455.8% 7.1GiB +0.8% +7.6%
echo-ws 16384 609,799 3377.9% 15.8GiB -5.5% +6.8%
echo-ws-pipeline 512 11,104,318 3381.7% 10.8GiB -1.0% ~0%
echo-ws-pipeline 4096 10,844,098 3401.1% 13.8GiB +1.8% +6.2%
echo-ws-pipeline 16384 8,767,586 3315.5% 21.4GiB -1.3% +3.4%
Full log
  Throughput: 10.82M req/s
  Bandwidth:  72.24MB/s
  WS upgrades: 512
  WS frames:   54119038
  Latency samples: 54119038 / 54119038 responses (100.0%)
[info] CPU 3382.6% | Mem 10.8GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    737us    679us   1.12ms   1.92ms   3.67ms

  55521592 frames sent in 5.00s, 55521592 frames received
  Throughput: 11.10M req/s
  Bandwidth:  74.11MB/s
  WS upgrades: 512
  WS frames:   55521592
  Latency samples: 55521448 / 55521592 responses (100.0%)
[info] CPU 3381.7% | Mem 10.8GiB

=== Best: 11104318 req/s (CPU: 3381.7%, Mem: 10.8GiB) ===
[info] saved results/echo-ws-pipeline/512/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   7.99ms   5.71ms   10.20ms   44.10ms   300.80ms

  38935217 frames sent in 5.00s, 38874529 frames received
  Throughput: 7.77M req/s
  Bandwidth:  51.98MB/s
  WS upgrades: 4096
  WS frames:   38874529
  Latency samples: 38874529 / 38874529 responses (100.0%)
[info] CPU 3742.2% | Mem 13.8GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   6.04ms   5.58ms   8.58ms   15.10ms   32.10ms

  53733573 frames sent in 5.00s, 53676101 frames received
  Throughput: 10.73M req/s
  Bandwidth:  71.74MB/s
  WS upgrades: 4095
  WS frames:   53676101
  Latency samples: 53676085 / 53676101 responses (100.0%)
[info] CPU 3409.9% | Mem 13.8GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   6.01ms   5.46ms   9.21ms   15.00ms   20.60ms

  54272462 frames sent in 5.00s, 54220494 frames received
  Throughput: 10.84M req/s
  Bandwidth:  72.46MB/s
  WS upgrades: 4096
  WS frames:   54220494
  Latency samples: 54218814 / 54220494 responses (100.0%)
[info] CPU 3401.1% | Mem 13.8GiB

=== Best: 10844098 req/s (CPU: 3401.1%, Mem: 13.8GiB) ===
[info] saved results/echo-ws-pipeline/4096/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   45.70ms   32.40ms   65.80ms   375.00ms   401.90ms

  24076052 frames sent in 5.00s, 23813908 frames received
  Throughput: 4.76M req/s
  Bandwidth:  32.19MB/s
  WS upgrades: 16384
  WS frames:   23813908
  Latency samples: 23813908 / 23813908 responses (100.0%)
[info] CPU 3723.0% | Mem 21.4GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   29.62ms   27.70ms   42.00ms   74.90ms   93.20ms

  43229507 frames sent in 5.00s, 42971459 frames received
  Throughput: 8.59M req/s
  Bandwidth:  57.75MB/s
  WS upgrades: 16384
  WS frames:   42971459
  Latency samples: 42971459 / 42971459 responses (100.0%)
[info] CPU 3386.5% | Mem 21.4GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   29.07ms   27.70ms   39.00ms   76.80ms   95.70ms

  44100078 frames sent in 5.00s, 43837934 frames received
  Throughput: 8.77M req/s
  Bandwidth:  58.92MB/s
  WS upgrades: 16384
  WS frames:   43837934
  Latency samples: 43837934 / 43837934 responses (100.0%)
[info] CPU 3315.5% | Mem 21.4GiB

=== Best: 8767586 req/s (CPU: 3315.5%, Mem: 21.4GiB) ===
[info] saved results/echo-ws-pipeline/16384/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[info] skip: ktor does not subscribe to echo-ws-limited
[info] rebuilding site/data/*.json
[purged stale] fulmine-tuned.json (fulmine-tuned)
[purged stale] oxpecker.json (oxpecker)
[purged stale] zix-grpc.json (zix-grpc)
[purged stale] zix-ws.json (zix-ws)
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor.json - 41 new, 41 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@bjhham

bjhham commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

The h3 bottleneck looks better now except for static files going down to 37 rps lol. I'll investigate this one next.

@bjhham

bjhham commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor

@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 Results

Framework: ktor | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 882,629 6077.7% 4.8GiB +8.0% -4.0%
baseline 4096 801,403 5693.4% 5.0GiB -2.5% -47.4%
pipelined 512 574,208 4225.9% 9.9GiB -7.4% -6.6%
pipelined 4096 946,131 4686.8% 18.3GiB +61.8% +2.2%
limited-conn 512 679,299 5808.2% 4.8GiB +3.4% +2.1%
limited-conn 4096 703,493 5553.6% 4.6GiB +5.7% +4.5%
json 4096 444,064 4370.1% 9.7GiB NEW NEW
json-comp 512 194,005 6260.8% 4.0GiB +6.1% -18.4%
json-comp 4096 208,037 6232.2% 6.1GiB +7.8% +17.3%
json-comp 16384 205,017 6099.8% 18.1GiB +8.2% +61.6%
json-tls 4096 412,543 4457.5% 5.8GiB +5.2% -37.6%
upload 32 1,662 3105.6% 1.4GiB +8.7% ~0%
upload 256 1,850 4446.4% 1.5GiB +0.9% ~0%
static-tls 1024 205,738 6329.1% 4.0GiB +0.5% +5.3%
static-tls 4096 228,560 6040.0% 4.8GiB -4.1% -4.0%
static-tls 6800 227,630 5804.2% 5.2GiB +0.3% -13.3%
async-db 1024 108,155 4973.4% 10.2GiB +4.0% +6.2%
fortunes 1024 58,513 5187.8% 12.3GiB +14.7% +64.0%
baseline-h2 256 552,631 5890.4% 31.2GiB -1.0% +4.7%
baseline-h2 1024 542,247 5665.2% 31.2GiB ~0% +4.0%
static-h2 256 194,969 5876.3% 23.7GiB +2.8% +48.1%
static-h2 1024 191,846 5786.6% 26.7GiB +6.5% +8.1%
baseline-h2c 256 375,630 5681.0% 30.3GiB -8.9% -1.3%
baseline-h2c 1024 559,551 5676.0% 30.4GiB +38.9% -2.3%
baseline-h2c 4096 349,317 5444.4% 31.5GiB +24.8% +1.0%
json-h2c 1024 325,016 4140.5% 26.7GiB +3.4% -5.3%
json-h2c 4096 309,839 4292.7% 29.1GiB +9.6% -2.7%
baseline-h3 64 331,504 4536.8% 4.8GiB NEW NEW
static-h3 64 104,708 5706.6% 3.0GiB NEW NEW
echo-ws 512 1,013,612 3426.5% 2.6GiB -0.8% +4.0%
echo-ws 4096 882,787 3408.3% 3.8GiB -9.9% -42.4%
echo-ws 16384 407,423 1766.1% 8.7GiB -36.9% -41.2%
echo-ws-pipeline 512 11,190,159 3360.5% 10.8GiB -0.2% ~0%
echo-ws-pipeline 4096 9,886,897 3406.9% 12.8GiB -7.1% -1.5%
echo-ws-pipeline 16384 5,234,207 2356.3% 19.4GiB -41.1% -6.3%
latency-1m 1024 980,530 5553.1% 5.2GiB +11.6% +4.0%
async 32000 215,285 2135.1% 16.9GiB NEW NEW
Full log
[info] CPU 1769.2% | Mem 19.4GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   41.19ms   30.90ms   48.10ms   111.30ms    1.57s

  26433183 frames sent in 5.00s, 26171039 frames received
  Throughput: 5.23M req/s
  Bandwidth:  35.34MB/s
  WS upgrades: 16384
  WS frames:   26171039
  Latency samples: 26171039 / 26171039 responses (100.0%)
[info] CPU 2356.3% | Mem 19.4GiB

=== Best: 5234207 req/s (CPU: 2356.3%, Mem: 19.4GiB) ===
[info] saved results/echo-ws-pipeline/16384/ktor.json
[warn] ktor echo-ws-pipeline/16384: container log was 195900437 bytes, truncated to 8000000
httparena-bench-ktor
httparena-bench-ktor
[info] skip: ktor does not subscribe to echo-ws-limited

==============================================
=== ktor / latency-1m / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.007,
  "requests": 18938011,
  "bytes": 1685482979,
  "achieved_rate": 946577.55,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9466,
  "bytes_per_sec": 84245401.54,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 2092276,
  "latency_us": {
    "min": 4831, "mean": 937823.4, "stdev": 200560.5, "max": 2094079,
    "p50": 915200, "p75": 1039104, "p90": 1190400, "p99": 1544704, "p99_9": 1814016, "p99_99": 1989120
  },
  "status_codes": { "1xx": 0, "2xx": 18938011, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAH2Z4nEV6D1hj1bUva+2Tk8MhEzOImQghk0FERCYiUoo4IqXzpqNO7VTt1Kv95k57rVV76+3t6x9fv742xhhTymBkYowxRszESCmmFDHy8pCm3NwYKY/GFLkUkSKlfJSmMWImZjDiXedk/B6HnOyz9/rzW7+19s45O9Fbz1xcVnbF+bLSH7vwDvLFmcfKbsyWOv7Riu8q8SZ8CfBlHpV4Je6n86WowGvl4zP4JcTPYQUdP8KvUPeleAnuI6Er8V/odQn+ErCcuvfR4AEsw8tRyd2AX+Rup96LcA9pX4nXkMUyWUpJ52u5cjKCNFZGPdzlyMnvFTTIcC8eRDLKaJT+yuigtqyulN5K1+XIOHmI2gppvIwu98gNuVdRMknGpB5JVil1lpryOJaJJMqRCs+V9GRVRtCom5DykiAJyPKlM4eSWRKukBoyAKUMQCHhkCKTxC+SX3slOY7JEZZxChq7lJOQKrk9pcDLsJZIYBy97eGQ45WfIi2XG6Qk2eawXDIioS7jK7DkVA75AuCyEjYFhzy7wBUrjZbMkDVOVpJRKiXGSjGwEncXbJATglIyQF7LyRtFqOBkx4SBl4khGaFEutRLPsvlrMokMa7klZX8ypDkHJQIlIIgQa6MJ/AccX7BiOyWlbinDqHEAglwnIKXs/VpciinvNTipS5O/uPLCJicl5I6x8m+FMjzJa8CxUH9vARWkNMpJ1zKPOMlg6VyKZNDkA6ywEvdQhlf8lLGcSLRwIsEmd548l4mcKgiOUFEQeBl66U/TqZAoBhLlFwARv8UiVQ0FypOWXJ1IVqUylQeUUr5kVlUUvT4aW5LyMqkwpEaeyRqKSipQqV6kHkuUc9LAch1WC7XJr3kWCVvZSXLUkSSGuEuJ/o+JbdUqtKLV3ClZJRJ9uVXKQopKIqfOLkw+TgpVBkSL8mUyfxKNVNKn8wdCuREol1SlyJmvAxaKgGuTBTKOGJQkCFQu0y8kDXJEZMLF0spkSVK3iTMn6Zaqiq5Skp1eoFsKWy5rgQmISCm8MJk5qQKRCUvFTmTZ7M0j2UiS4XGXZgC8qXsvlwuqJJ/JgUlWeKl0OTZJMdfLgtzF6pYeWECo7SaXpivFxqXyGm5VJrcUoKV8ioiGaKglLzkgEBRXcozX8HJcxal6pEXsP8/3cvkdJV9CkxmRJqhrDR0YYmTp7L8L5khdqU5rCjNJbmL/9Q7OZK4kGaelBu5pGkFkAujVNusJMtLsfMoFxon1RuiSF2CzJw0byR5FS9Xd6kGqEjIjzR9ylSctKioUL4iCZHmkyhyap7jBam6KBOCtBTSJFNxKklbxYtSKVDVUR9pCtTNa0iRZp/Aiyp5VgoS95xkiRMkyLygQp4MiCpBlDXLVAKVFDkXBXJURupcmSBPcypClD3gBcDy54JU2Lxcb3xpqkjwRIklacaTMwm+3C3PC05aA0QJg8SBpCzXWWka0IhkW2JRoKWELy0bZE6uRl4t9QqSRUEmUJCsSdAIpKjiBFGQw1apKykcURSqKGhBI3IEg1NT9EKVQAQKgqhSUdRS0JXkTxRFYlKUyCMzooaXrwQNpYAoUBNjIqplDiUmJAIl0lRSt8QEQRQlzNIsluavnHcpUGm9lPjkLsx2tcSK3CmvEmSKZnCZNOeJQE6WJ46k/ElR8jIrkiWZLAJL/aKak7DIjEqlIS0ThFtNIYrShKAIpCwSVHmtFaRaEASNFIIkJ8pgKTopeyoaLVOrVKJWXSmgWq3iVWpeyjqVg8QzMSYtYSKn4askQKiRQRIzKjWVkkqQ+JdEiHiCR3XKVZK2SqAKJZqJVqKokpyJvFpVqVEJlUS2uqpapzZWV6krtRryZxCr1aJepa5SVfIiQajUqSspJ9QraASukucr1WJVlaaySqXRioKG19CpSlMlkguxqpQ3QVBzGkqeyNOwSioXXaVYpdNqtVViZaWqkv40VWptc7XWqBV0Kn2VRqvWqNWiRqUVNURGpaCqVGl1ao1GVaXRack86Rg0eo3GKFSphCqKVENjIgWt0hCHRBin1lQJKo0gu9WoNKJWoPQQNjJbWa3XVunqtSqVTl1nam5qUleL1ORITq0Rq9QaQS0SG5oqo5aMakV9pUqnbahWGar02mpVZX11VaWBPFVpK0WyI2qqq4k6tbZRY6gUdEZdZ329xqBu0DUbDNo6fVWd0WjUVhr0Rp1WX62t1xvaTe09pvpDLadaW3tOttd3NzYZm6obtcYmU2tnR1tLg6mzrb7LZDS0NR01dbW3tR1rams43NCsb1BrtboGg7aySk9sk22tsb5Oo62vbzAZ6/StxqY6XSNB1Rs1eq1Gb9TW6XSqpsZjh/Sdh0xGXX17W0drc2szuTJotMaWEyc66vT11Y06nd6g13b21JN6nUFbVa2t1hnq6KyvNjTqG1VGPYVe3XC4qtpQXafV6ZsbdHX6Q50djUfvOfm1b/zwnpaWhrZ2favJYKpuqqs31jU1NLc0NDS0trY31tXXNzY1NRhMLbq6JmNrS1OrztjQ1GAytTQajYY6fUObobqpvV7fUG+oM9U3G5uaG+r0bZ3HvtFiaNIb6452dbR23nG8rcPUamo90n2os6HVdKyHGOnsOd5c19RhamsyNR667ciRk0dPHm3r7mk7bDp67K7Ow4dIqKOtu6WVDHRVG03NDY2V7c2NrU31rQ1dJp3WYKhvNDWRzY4TPYfaem7rJMhNHU2t+vqm1vYTXXfdcWvHzW2Gjpu7OnvuvPmOO27r1tY197Tr6+uria+m+vomY/fNh7oJgUnX3N19pL2ns9V0vKurq6GpW9tUr9c1dR45bmqqbmlvbjnU2dTcdri7rbu7p+t4R0uX6dDx5pbOw92tPTf3tJqamg7VNek72hpbD/e0tXUfO3nHyVuP3HHz4VuPdHV1HDt6uKeDYBxt7mw53n703s77urtP9Ry7964HvnGnDR68revY4R//9OS9Pbcd6TpyquNoC/noPt596PDR7pOdN3ff+t1bT3Y90HPsSEdP3ZGbu25tO3niX++9+ejx245+7dTR9s6244ePHO05esexju727u954YH7vtsLp24NwzIMQABG6BWEcQjDOnhwiK43YRR9dD0IbhiFIZihVgBi4KHXHLhIIg5ROkIwCRHSWoZZulqnc5x6ojAFSdJYgRRkYR4S4CdbkuQEjfnJZpAsWHGLelzgoOsfuqlho243Dfugl8y4ScQBfaQehQncJBCSUoxMeAnCHDgwDTm68hG4JBkblcDLMiHqnSLHRejFVVijs5X0JVDrBClLYHOwA+O4jFGUegvUs0pjcbChG2dhmGQsGJPDm6Kwx8FKiIbpNQlj5NmHfTiOcXAS/GFMQT9ZWoYNQjh6AUGQNEegn3BQDy6QRpr0whTbFOkESXOEMM+RVI4sbIKdvAVpPAHT0If9hNeOU9T2U2+edBbI7yQdCUK2A0myOEd2QjQ+SwnMwjR6MAtZzOIE7pDXNGkViLkCSL4lHtKkG6N0bFNqV2jcj1Kq3NT+vpModJKzsOwiR+0ECQ7R4aUQbETABCwSxCQRHYctguKBh37il5MRIA1JckoGlyBQGXBjjpKThzgGmZ1ZWJgCSoALM+hkEwR0mOAvwC4soAUDuEbwY3JlRMhalDzlYATH6CjiCsbRib04jRtEiNQapnaCxqzUjuI2Ee+Tr0dxkA2xeQrHjCPUU6SeMKZJXqLAQV7TOMBmiepFImCcPC7TsUhYizCEW5gjLGbCnSLKgpgi6TAdWVxFB7PjPFo5K7dAeCaxn+VxhmJZwF0qSy/JzpL1ZRyiWEI4RaXhIGQ+0t4grCNk30J1PkmWBliWGAmRzjJpm1mQRdguyWYwwHxsnrmYg23iIhbQzrwsTRJzcuR+zJNGnnpnKbJhlsQ1jFCPleSL1O9m0yxHWKepN4EuQiIxMok7uIkS5lnqmcJ1wjGI0vwuQJRwBYnbfmYmzUWS8lOeBtgoi7ECWXKwDHG7TnGnKNYsYRwiZJsUcRZWCZ+Z8uphM6TTx+LE+zhbRS+11snOOGfhPMzKNlmeJdgwc3NzFN04W2CTpDFKkuNsi5iaxCVCOUeHha5HWIw4XyJ/q3Qk2DZFK/ExwuIUwTLZdbMtklvCAbreofwWmZ85icEwycYJ+yRFMsQChGGIzbEoW6KeWW6UC3Ex5uRyzMNtUw6n2QaLcQ6uwNbYIpvirAqLwkoIx8mXjeSs3ApzkeQWl2VpLs45FHYuQBZc3Aab5BIsxKZIz8usXIolydYOW2dLND5E5wHORb3DZKmP9bIN3KWchghRhFhOEGtzhClIPBTRxWxcmE1zfm6Ti3GSHal6I2yIW2DDXI7bYhYuwgLcErfLfIosG2PLzEHtaXq30iHFHeCKxPUUN8z1U3RuLsItcClOYjxGGPu4DGEc4aYJU5Jzk8Qcl6DM+LgwN8mtUX+MmNllZsUcP6dIKlyKDHMoEooAn+Y9iiGFVRFVuBV2Rb/Cz8f4Fb6PzyumFAOKlKKgyCkcwrByXJngl/l+ZV4xxo/xPj7PhXkbP8DblEnSnefd/CRfUKQVS/yo4BCW+JRyULmlcPA5flQ5olxXbvEJ3i9klNPlZqVPmVfmSSqtjCo3lNOCuTxRHhSWlENKt3KOD/NbyqAyo+xVTihX+RAfVPYrN8mPTWlXOuiVVi4op/kgHyfbdmVECAlTgkeIKBeEoHJDGBZcQk5pEayCXRhTxmh0U3CUZ+iKMCgjynllWNlfPla+KgSUVqFIGkvCqrAm9ApFwpESVsunxIhoEUdFb8W2aK9YELPlITFd3l8xJo5VuMXN8rnymOgT58qd5cvl7vKF8l6xV1wpD1YMi1mSsKn6K3JisMJSYVV5KryqkYp5cU6MlQdIZ1OMkX6/OCsGKnyqbZK17JlQpVXpPc49qYpYRUr0VCRU1ossZGOyYkIVqpivmBYt5HVV7BOTYrRis8K+p1jhV0VUlgpzxVJFShVV9asSFSsVRXFKDFf001VANacy71mpyNHVSsXYnok9gT1hVUiXvjSrn6lx1Qzp/QbnAU+ts3ZIP15tMyzrAzW9NXM1C7U+ff+lC5eGa2P7h2sn9CsGb42jOq6P1yT0BUPaOG3MGVL7Xfs3DGM1/ppgtbN2p3pYP10Tqlmr3qyZNWwYFmoCtUu1KePuZRGjp27COGlw1yZrbIZFw4J+oHa5dssweyBpXNm/aJw3pGsyhtn98ZqUbufSgN5eu6631ZprZ2rs+ycMY7UFg6/WrU/qvNVu/Watw5irDda6DRvGJYP/QMwwvn/KUDAMGvvrturm6voPuI02o/+y1IHEFZnLIgfW9meNtgPFOtv+ydqiQXqNH0jWrtdGDzgudx1wHFg/EK+31pvr/HXhBkuT/SrzFd7LvfWbl21fHryi7/LVhqXLhhvH6n0NlssHrhi/YvqKYKP9qkKjpbn3aq9pomnoqqGDjqtmmiabh69aORg7uG7qbR4xTV7laI5f3XeNvXW+pa8tcs3S1fnWyRbz1eZr/K27B/0Hx1qcpvWm3YOhqwc/E/3MRvv6Z2auDXzW2eY82GsKtuRaEleHr1lsCVy78Jmlz7rbhzvHr1+9LnJD/FDguv6O0GdHOjyH7DeYu/Kdo+2r1w90xTvXb9jt3umK3Gi/sXBD6FCsa6srdeP6odGu/PXh7qXrsl3rnb7rB2+YvDH+OdsXAl/YOjL3Oefhrf8x2TPzhZGbol8I3Zj4XP8t8VuGbooe270lfjh+ePOm3pvstyS/2PdF37GJY7FbB24PfSX4T/Mniie2vhz8qvnEzu2pr8b/eeBu/zfXv2m5b/Pr+W8Oftt+//z9Kw9k7nd+e/o73u+m/y38neFvBb6d/lbhQcu/L3xn8/7NBzcejD4Y/cHCD20P+R/afGj4J4OPgu8xCP8s8hPbTxIPg8sCxZ/1PgoFG8zYYe0JWHLA9Gmw2sHXJwmu9cKEFXJ2sNvA9igMWyBEjdOwcRqSj0LWBstmcD0KizYY+DlEbdD3C5iwwY4FPA/D4mMwY4FBC2z/zEF6Zpi3QtIKGSuET8PsAEw6IGWDxCMwb4O4HYZ7IfcIbFjB9XNIWWHbDnM2mLZKPf29sP04bBL0Xog9CesDUDwNvtMw2gejpyWAcRvkfwH2M5B8ApYHIDoAeR+s0j0vXXoh/DTsPAGZM7DlhszjMHAWFoIwMwjrL4KX7rSehhDdCL4EoRDEQpCl8zA4fwWxcViNQu53sDUFs2/A1OswHAdLAsanofcNGI9J58ibkExC5r9g9W2YXQLPO7DwNhTpZncZiivgfgfyqxB7F1Kb4Hof0h9AYgd20zD5D/Ccg8B5sJ4HXwF6C5B7D8Zz4DkP/vOw/B4Ed2B4G2znYCQD/dtg+RD6z8PAOUjtgOMTsOVhbQfWCuAuwNbDuEn32lYMFCH8CI5bsO8R3HkMC3QHZMPRjyH0CNK/+zRmH8dsL9pOY8iPyRdw+UXcpbunZ3H3aRx7HONuXPHg4ln0nkXHINrpDtqNVifOPomW5zA5jINDOPYMLrkx8Byu+DH9NK48jzsejD6Ncz/HpX6M9aL/WYw/jUkX5jzo8+OGD3t9OOHH/iB6zmL8LOb9GB3GxAuYewHjQZx7GUfGMfwSJn6F3hBmhnA6hKEXMRnAABn34fazuOnFVQ9uBnH3JcyPYm4E+8Zx6lWcCOH4SzgaxrH/g+ZJzE5i32u4OYneX2GO7hH/L+ZewcKr6HwVLb9GyygOTWLiN7j1KnoiODWOK6+i/RXcnsLF/8DVV3FwHAu/Q/MsDvwBE6/jyhu4kcLwMu6+hSNvoesdnFnA8f/CtTdxOIm+BZxaxrUFXF5HywqOrOL8XzGcxsAKerewsIALa7j0d/S+h+HzuJnDgQ8wl8X8ezibxlAGI1s4vImpNfSfw1wGi+dwbAe3P8TlAq58gBNZDL2Pniz2ZzD0Ebrfx8kCDn6ErofZkpmN97GElc1bWPw8egoYpTvHj7B3B0e3MVTE9U8wZWUr5zHxEfo+wcDTLP0oi1tZ5BMM29i8TWr0/oLNP8UWHSx7hkXdLHKGJQaYy812nmY+L5t3sl0vW3qCFc0s2c/sT7HiGRYbZJMBlnuKub1s4CVmD7DAs2ziWRZ5js09wyJnWSHIMsPMO8qyL7CdYTY6xsxjLBVhSxPM+RIbPMsGhtn4L5kzwDKDrP95tv0sW3qG+V5kuy+wxIvM/Rzb8LNAgNmfYw4/i55l+SAbCzAzefGyGS+beIKF/CzpY6nn2MTzrP85NjLApp5hk0+ypIOlT7Ptp5j9cZY8zWb62CA9PbjZ4ACzPcnsg2yFYLvZ+NPS6LqNuR5hDgsLfISDVuZ9mE18hLsfYiaPw3Tn/ijb+RC9Fua0sul/4MA2eovo/AQtdMP9MBv5BMdkwoMWtmFjU30s/TH6n2QzdjZ6DreKGPwILR/iwi+YrZ9FHmXpHNqsbPQxFrayxM+Z2cp2dtD3CFt7lPWfx8g2ZjcwvI0TW5j+B8a30XMO3Vl0v4fLWezL4No29v0No+tYfA9z7+HWFjpzaN/GxU9wpYCb72PmPfRlcIBG07j+LvatYvbPOLCOo/8PIykceR29f8IMPUq8hfN/xM0FnP0jrtJzyZ9w+G20JXEzgeuv4xI92/wet/+Ay8s4MoeDVPx/xPQsrk+jZRKHXsf5OK7FMPwGuuKYfg2zv8XUb3H1ZRyOYOEVTL6GntexdxbNb2DhPzD6nzj1Oi7+J85P4swraI6ibRqjv0fvazjzGi69ihu/QfuvcWwIB3+FGy9jagyTo5gZwQlai4LYdxYX6DltEN3PodWLaR+uvIBzv0R7EKefx0XqeR4j8oKQOYvW59F9FlMB3KJH2+cx5cCZPnSexhkHTjsx4MP5J3H6LEa8aHFh3iOtWhkvBgalJSvgwZUzOOHCYj+m+tD1C5wwo4UejD+BJVo8LZR0mPiIPs1w6BF0PYIrj6LDivmPoZcaZoydh2lartOw/CEUc9ISTSt2vAhLeZjLwdxHkPgYAu+D/wNYPQ9r52F8G8bSEEhD8gMoFMD8IUxmYTENjizktyHzPszkYWwLVs5B3zlw7cBgHnJZWMnC4N9h4X3ofw/seZjIwvY5mDbj1jlIvAexbXB9BMMfSp8p69uw8XfYKEDib2BNw1QGirTJ8zdY2oJtAvkX2P4rBN+Fjbch9GdY/yusrIFnDVJvQ3IRikuw8iYszsDYH2DkTdhagNE5GJmFXfpoi0L4d5CPw8zvYdbJcj5W8LPBZ5hliOXPsO2H2eonOHce1x9jQRvzFIki1vsIy32Mo48zTx/r/wRD9NS+hplldPwRzX/DVXqcfRf972D+XZxfQuebGP8j+t5By98xtimtftF3MfkBjryJM2+i422MvYWTf8LYHzA+jcXfY2wRg7M4n8DeefTMYDSBlpfRP4QDv8TdJzD5S4yOYnoCbS/j7Cj2nsWRl3A4hIWn0Pw4Dj2Jmecx7MV5DybOYOE0mulj62npI2nqSVw/g0Nu3H0KfS70WnHhWUw4MPMUDtkw9hiODmCcLPThHH10PoXFJ9Fjx3ARBj4E3znwZyFyHiIPY/ZhHM9D/h/g/QuMvQuLf4PdDyC5CatbUNiE9byULEcRPLSBtgKra7C1Aem3IPMmLLwL6Q2wbYDnLzC/DFtvweQKDL4h3WxMxiG7BNPvQPTP4HsL7K/DXBQ2fivdimRfg91xyEUhMQ1O2siifaYweF6B9VdgegQsQUgOw0AIwuMw9gps/wb6XwL7KGz6YSsIa2dhzANON6SehTUPDHohfhZm/ZAeBIcXcl7IPw8jT0L+RbD9GqLPQMwFLhcU3TDxOCw6IP0EpE5D/jSs9MLWU1A8A6le2H0aXCRwFgoumLND3iVZHqH9RTcEnoDFn8N0P2SegLnHIeiAoacg9zjM9sLmI9Brg7AZ4j/Jf2/hwYn/Ffjx1kOjPxj9fvKhxf8d+6HnR457Fr+18+Dyv87/qPD9hf85/u+xH0z+W+r+te+Y73V+Y/jU9rdS91tPLf5z7C7HiaG7A8fDd03ckf3q5G1DX187uXD35N2JU8X7Ig9M3bP0Lysng19b+af4ydU7109NnCjesXx34T7/bakvpW5duiPxpZFb0sdmjg3dNvPVwa9s3xX8Wu7u3NcDpzy3rx4NfNl3+9yXPbeH75i+K/L11W/k75q7c/drnhOJm2Zv2ejK3xjpsRxOHHUcnrjB8vndzzs+v/IF342urlh7tHuje7zHenioZ+HG4c/Nf773htnOaKe/o//QVMfodRHTwDXZ1mCLy7Rosl870DZxnatr/dpIm/P6oY7gDaNdiR5Xt+3w9PWxa3Zash0rXbvXT1/nvLb/Wttnxzun2nfahjoy126aBlrmD66ZstfMtHtah1qy13gPOk25Zs/V69dGr100eRr7G8xN841bl4eahw+6rlg/sLnfc6WjwWlc3T9rXL7c2mS+MtxgvXK+YapusWHiqrkDE3XOhohh5LLsZYtGm369Zqlu22g1bV4eu3L78sX64fpiQ7HBVrdR4zWM1KRqB/Z56Ml0TOev7aWn0jGDed+gbmbfksG1P11T0A3UOHVzutWanerNS8JVFu3ixVntun57/xY9EUZqLLXhao+2r2py31z1uGFIl9R697n3JXXbF69VzVy6qI3qIvs2asZr8/sXaieqnftmq/y6Za2zKlQ5fdGk2q0Z3Lt80Yo6tLf3YptmdG9mX043qF3UbVwye0lBY9bEL1rU9NdEdbu6jb2pvY69u3vXa+PGgGG0NlPdp3fr85du1ESr8pX+SzYuyVQnDLHqcI3z0uTFkYut1X6ttypJdgt73Xsje+cv9lR6Lp7dE6qaUS+IadWU2l25uXfx4sE95j3zFTFxhXYWcrQTEKYdgtnyhLipsl9krdgQIhXje4qCW1hRJpWhctoBURbKPcKgOC3meJ8YUSwrZhSrypXymDJEuy1BYUrlKy8qp7iEYp52cVYVOWWfaN4zxY8qNlhWMcT3CeFyV/lCRURZLB/hvXtG1YvCKj8gDCq8yhztR61xZmFIOVdhLh8XbeV+wakMsVnlDt8nesSZ8lm+KGwJa0ryKuTFHcWqwq1c5rYwydn5cWVYmBEmFT7lMp9S7CoHlH20RzMiDNDuzKIQE/LCGm8WB8qzyinamZrgLco5ZuVHuJwir5xWFJRh2rtbULjEkBDnZrkQpllEkeEWwEz72LNw7yBO0pbvOm3AJekrjm3abhzBGEuAnTa86SmBtvoKSr9ym/m4YYWfSyuW2YYiRBtk/UqzIst5MYZZNkkbu0m2CQnagp3FCDfCFrltZZE00izEO4UhboBgUHD8GBukDXUbOJgLluibg+7vpiGCTrjztiN3+eGwg7b/T25DGK20/RyFWy1gge8V4GjLGm1AJ2GYRWiDO0U7/SlKj5XP8xv8lJjckxIHmEe5wa/R1nMY6k/+eAe+t0q7+yG4955jraeOWODOYzpee+KUFLVK10+7+ke+21SlU43Rrn2GAMUgg8cM1Y2dHfquxvZ1mKPd0wI80OKFu472w0/v6aSvhPVCh6lerGyuVqnrtPStPX9creG1I/CgyljZbIMfm0zNa7QNbOVs3APHpa1y2kjnxjknbSPfK8g/tZB/rWID6ctw+at36ecxIl/J6+QfbNTx0s8H1PhTO9ynb0TpFzP0Zbq66UhnWek3Ma3NyGmxir7EFivlH0d0qOgnHbcd70czfUWQpI12aWv4oSMN/w1ypXeX"
}
[info] CPU 5492.4% | Mem 5.2GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 19616345,
  "bytes": 1745854705,
  "achieved_rate": 980529.68,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9805,
  "bytes_per_sec": 87267141.87,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 1457610,
  "latency_us": {
    "min": 107, "mean": 169765.2, "stdev": 177213.2, "max": 1459199,
    "p50": 108768, "p75": 245952, "p90": 420480, "p99": 775936, "p99_9": 1009920, "p99_99": 1195520
  },
  "status_codes": { "1xx": 0, "2xx": 19616345, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 5553.1% | Mem 5.2GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 19601327,
  "bytes": 1744518103,
  "achieved_rate": 979766.90,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9798,
  "bytes_per_sec": 87199253.89,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 1362741,
  "latency_us": {
    "min": 69, "mean": 184106.9, "stdev": 185938.0, "max": 1363967,
    "p50": 121760, "p75": 270720, "p90": 447872, "p99": 802560, "p99_9": 1084928, "p99_99": 1265152
  },
  "status_codes": { "1xx": 0, "2xx": 19601327, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 5563.5% | Mem 5.2GiB
[info] run 2 wins on score

=== Best: 980530 req/s (CPU: 5553.1%, Mem: 5.2GiB) ===
[info] exact CPU: 1054.32 core-seconds | 53.747 us/req
[info] saved results/latency-1m/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   168.28ms   140.90ms   162.60ms   961.30ms    1.59s

  1909282 requests in 10.00s, 1877282 responses
  Throughput: 187.70K req/s
  Bandwidth:  11.81MB/s
  Status codes: 2xx=1877282, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1877282 / 1877282 responses (100.0%)
[info] CPU 2452.7% | Mem 16.9GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   146.35ms   143.70ms   146.90ms   242.70ms   516.70ms

  2184853 requests in 10.00s, 2152853 responses
  Throughput: 215.24K req/s
  Bandwidth:  13.55MB/s
  Status codes: 2xx=2152853, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2152853 / 2152853 responses (100.0%)
[info] CPU 2135.1% | Mem 16.9GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   150.90ms   147.10ms   150.40ms   271.10ms   516.40ms

  2125531 requests in 10.00s, 2093531 responses
  Throughput: 209.31K req/s
  Bandwidth:  13.17MB/s
  Status codes: 2xx=2093531, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2093531 / 2093531 responses (100.0%)
[info] CPU 2157.9% | Mem 16.9GiB

=== Best: 215285 req/s (CPU: 2135.1%, Mem: 16.9GiB) ===
[info] input BW: 9.85MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 37 new, 37 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@bjhham

bjhham commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

I think I solved this bottleneck in the pipelining, though it doesn't manifest in benchmark-lite. I'll need another run on this updated dev build to see if it works 🤞

@bjhham

bjhham commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor

@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 Results

Framework: ktor | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 878,934 6042.9% 4.8GiB +7.5% -4.0%
baseline 4096 735,204 5453.4% 9.1GiB -10.6% -4.2%
pipelined 512 537,179 4187.9% 10.5GiB -13.3% -0.9%
pipelined 4096 946,099 4661.3% 18.0GiB +61.8% +0.6%
limited-conn 512 676,947 5744.2% 4.7GiB +3.0% ~0%
limited-conn 4096 702,675 5850.5% 4.9GiB +5.6% +11.4%
json-comp 512 195,834 6299.5% 4.9GiB +7.1% ~0%
json-comp 4096 207,376 6200.3% 8.5GiB +7.4% +63.5%
json-comp 16384 205,837 6066.1% 13.2GiB +8.6% +17.9%
json-tls 4096 409,463 4333.2% 5.9GiB +4.5% -36.6%
8gbit 512 49,372 538.3% 1.5GiB +0.3% -44.4%
static-tls 1024 215,958 6309.3% 3.9GiB +5.5% +2.6%
static-tls 4096 235,626 5984.9% 4.8GiB -1.1% -4.0%
static-tls 6800 234,668 5808.9% 5.3GiB +3.4% -11.7%
async-db 1024 108,115 4934.0% 9.2GiB +4.0% -4.2%
fortunes 1024 58,545 5197.2% 12.2GiB +14.7% +62.7%
baseline-h2 256 516,794 5844.6% 31.1GiB -7.5% +4.4%
baseline-h2 1024 515,234 5793.0% 31.2GiB -4.9% +4.0%
static-h2 256 204,242 5841.2% 24.2GiB +7.6% +51.2%
static-h2 1024 184,025 5624.2% 25.1GiB +2.1% +1.6%
baseline-h2c 256 387,483 5724.8% 30.4GiB -6.0% -1.0%
baseline-h2c 1024 417,075 5159.1% 31.4GiB +3.5% +1.0%
baseline-h2c 4096 275,492 5395.3% 31.3GiB -1.6% +0.3%
json-h2c 1024 320,071 4779.0% 26.7GiB +1.8% -5.3%
json-h2c 4096 312,378 5132.4% 29.3GiB +10.5% -2.0%
baseline-h3 64 335,772 4676.9% 4.8GiB NEW NEW
static-h3 64 97,531 5318.1% 2.5GiB NEW NEW
echo-ws 512 1,002,058 3394.3% 2.5GiB -1.9% ~0%
echo-ws 4096 841,653 3081.8% 6.8GiB -14.1% +3.0%
echo-ws 16384 385,199 1751.5% 8.2GiB -40.3% -44.6%
echo-ws-pipeline 512 11,175,345 3353.8% 10.7GiB -0.4% -0.9%
echo-ws-pipeline 4096 10,191,082 3103.5% 14.8GiB -4.3% +13.8%
echo-ws-pipeline 16384 5,157,240 1777.0% 19.4GiB -41.9% -6.3%
latency-1m 1024 991,158 5628.5% 5.1GiB +12.8% +2.0%
latency-10k 1024 9,980 75.8% 444MiB ~0% -4.5%
async 32000 217,858 2267.3% 16.5GiB NEW NEW
Full log
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 19785016,
  "bytes": 1760866424,
  "achieved_rate": 988961.94,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9890,
  "bytes_per_sec": 88017612.33,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 1724373,
  "latency_us": {
    "min": 78, "mean": 83175.0, "stdev": 123998.8, "max": 1725439,
    "p50": 33360, "p75": 108384, "p90": 228032, "p99": 573696, "p99_9": 1001728, "p99_99": 1564160
  },
  "status_codes": { "1xx": 0, "2xx": 19785016, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 5619.9% | Mem 5.1GiB
[info] run 2 wins on score

=== Best: 991158 req/s (CPU: 5628.5%, Mem: 5.1GiB) ===
[info] exact CPU: 1068.75 core-seconds | 53.899 us/req
[info] saved results/latency-1m/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 199536,
  "bytes": 17758704,
  "achieved_rate": 9974.76,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9975,
  "bytes_per_sec": 887753.39,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 62, "mean": 176.6, "stdev": 1326.6, "max": 56255,
    "p50": 103, "p75": 112, "p90": 127, "p99": 591, "p99_9": 21112, "p99_99": 50064
  },
  "status_codes": { "1xx": 0, "2xx": 199536, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 145.0% | Mem 434MiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199606,
  "bytes": 17764934,
  "achieved_rate": 9978.56,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9979,
  "bytes_per_sec": 888091.83,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 61, "mean": 144.0, "stdev": 875.2, "max": 46879,
    "p50": 103, "p75": 112, "p90": 123, "p99": 173, "p99_9": 7342, "p99_99": 40080
  },
  "status_codes": { "1xx": 0, "2xx": 199606, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABQ54nD1VTWhcVRR+79zz3p03L5PJOJ2MSdo0paa1rbaKGH+qKZiFqIhVpEGKC6tQsWCRgtCdSqClSAg2i1qyKBKCiEhxIV0E6aJ2UUS66qoLKaVoUCniorryO9+50/l57977zs93zvnOeZsXznazrDqV+Seke87N2VPZgbt+cFIzkUZj5IEdu2c/zz++mC/IDVnRM8VSudy41lxqbQzf7P44fn7q55339i7O3N5/bW79lVsHL89/8/avR347+u2xfz68/tHG8eXjZ47den/tvTvvfHF4Zf7qG4uvXnjx5uxXz63PfP/Yd3tWHz49fW5qYfKXsSsPLo2ubLreWRi51l4fvtD6ZOh2vd5crW41NhqfNZbj5fhHebG8VP5V/FCuF//parGml/TvcCN8He7JmpyW83Inv5tfza/k5/LV/IOF/MhifujQmwdf3vvCzLNP735kcvahHZunJkcnRzeNjw838BnBF79mozmsuGYNHRK1sIeyEjcNwhxIKUF5kOFi/7IQ3EUKySRyGbAqTLcwARPDFhoQxFElVKNwtAuW+JmSJNWAe8Q1Sg3DobwvUONa0KSd0AG/LZx3uGqbhLTVkGARgXaC3qhuxyJ9OsCXLsya7TKtGEdUNbOB0Gp1B2rPszLhCh4tDFgULo2wsK5wFglBKg0KUIzIvLa4UHMhkIFqZXv86EFsn2nNGBiqLWrUoDJ/9g8UjMwjM4JUa4u3htWHfrIyeLQ4SWF7llyxNtTBQvUMGggl3po+GFOl9itZK5ypJ4MpUlqrgFMdhHi0IeUxowYr5EQILFfl3rruE/qkQ0EKmYRlsShprLLsZHhqGcjcn1t1ciVG1dQutKUGM9lnqvupZtJxCkrKRkb6hQFeP4yUMeNtoxrMVqm4kc8LlpAJ6Nltu1XJHjussYFJ7wU+dKLW0nexaKxVbZt2l9IdQkhRmYDDrBLzYdRaSh5lL4AEJhKJpQKLDGftlPTiGuc6EIspto6lscSJ4svQDBVOtzIM512W2MRQxTugSE2YpYJSCymPGtX5UhJyrYM0ZuwhZxGYF71GBRsIujXgaiqNiUPW6Qq06XgwNoQTxRo+pGQwnkHnBjIiMBJywYrfRjVAe0eQkalMK+AGmsG2lZ6xOUJiRuGERjzGeuHQiBaEE5qX6NAG1CFSsD5yF1I/6mDopQEQZAviVbqUwZCKiYI+BKDUYpsNImetkSyzTLicN9HaxzLCajNnkmR9shpqmo73hwfBmqunbCYrp2tNHnecwWmqFYPa29CoqNu1LhTvOWvy6D0a2cyAVvlQQjlLKZqmXXJgKgFYLviuSMnjKHDINgeixQqjmZo28HsGsTW4Vnjb1uRR6cVCadQTqMZ+M+8tRhU+cn8ZTBorS9Wmg4U9vq3Mn+VKbVARFPipPRKhQ4LsG/Df2IvTHmQmwKkaq0q2iVUFNt+Vl7D9KZc/c5mTxznGtuLal2l23RjT3IOF/fKWzOMcpNoClT14sNMsHMDWqPi8vAYd79k+A57A/3VY2w7Lh3E+J0c5JLfAXk+OyQkdg49pfmv5NJeTAIDbCXjdBYka5/aWhXEztw0e+/T8jGWtjRC7+O/jPKrlSfkyZ1RPoKR9uI0GtEYde0BQwFYkOfppVFv/9ujl9xw2raV22dsVmm2s/I1rPQi9rcyiEasNurVS81h+OmnKdS2lhXeSv93szTZGbyFpG//bpTWRT7OKow+P/s1h53+DBYiZ"
}
[info] CPU 80.7% | Mem 442MiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199629,
  "bytes": 17766981,
  "achieved_rate": 9979.80,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9980,
  "bytes_per_sec": 888202.21,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 62, "mean": 134.2, "stdev": 684.3, "max": 42783,
    "p50": 103, "p75": 111, "p90": 120, "p99": 164, "p99_9": 4866, "p99_99": 35856
  },
  "status_codes": { "1xx": 0, "2xx": 199629, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABMl4nE1VTWhcVRS+79zz7ps3k9eXcTr5IW0naa0RQ7BaaahQhICIhkpBlG5EEcWCqIR2IbiJIlWCdGE3JUpdCCWUgiGodFGyKKVIFyIuRES66mIoCF1IESnF833npZr3JvPeved+55zvfOfMrk/O9kJo3Qz+F5vvjC9nPw3P3PGFD0VS0rEde/YuvnLqXDbMhrKq1/MzxVZrvX115Eo93Hl38vbgx0fuzf9x8PbhjcUbL1x+6ePj372++ubWibXl68ubJ1dO3Tl5enn1vUvvXnz79zeGr668vH5sZena4q9Hbix88eRvc5dn7+67OH1/1/rEP2ObvY3uhfqv6kz12cha+5fyZvlT61qxUgzzz9NX+WY+1Au6peft/8/xfNyIV+WWnJM1uZ/dy/7ObmVXskvZD9np7MQHx46/+NTThxYPHDrw2J6J6Uf3Tk9PPDw2lsYeGm2PtkZGWzva7ZGdaaQt7Za2dYelqZo0SUuCaEukUFGJIvZfgkbRkIK92MduKbFnhqUWXBN7LSTSTnOs5MmOCR87PGJP0a7KrMYF+FHt9sWodlpqCSlFuKvssJSSw1mOrYgv21TpOR6DsKAFC7kdyQ0Zq4jB3hmPnS/MKsKygBmDTAW9qXkLqoCyFHE0146Whm45RbrIFU5gDXzRCojRM4fPAByAgyfzbwzZotJ7JCfByYs0RhwdbBhnhdmZn5QDGDEH6ZJww0jMgSQqFpQwOBiImQBGtC5zF1UEViIIhTsQL9rzAAqgljz/gJXgl/nmcUNWFinnXbIikcGon2L84miMCiRLXzwybEut9E1/+IYUwBxLaBguHa+ccqnhaRvNDkJWWhuTwUsJGYARRW7kkqVsSiyEtxJUJBd1sz13B+cdcK/QSO7ksfx01iUPjbBAjoxDmfYwz0hRee4GpdTnCDpOi76FGYhRy/NUfe765F5lJ7tMyV6XzKRrCkVSjaILYxqa6kKvSxZjYdeMS8iQYYwcB9wBaO0FgFD4wGQcC177TbTUP+Xq1ERqoUCJUwHNpEaULuqCJaEl5EhMqiZ6M7MCpT8QsASPNSUWdbdnU3jhYFGrl4eheuugryAYthvkVTfqhYVOinde6XzbhdZQ9gaTrWBdGdfR9QVOWeeOcZdTlzkxIuP0jqD4HwTdkSYzytfeOs1sUi6VXGz6GXKTRlikhu3RVza+TJLJEucqV67bVZ5tI3SiR5fNtuydlTzlrH3hRxmPV9Qz6CLr/7oyQL7qk6PEc2iq3qFKO40puY8mKE5AZ4Skeyv3GmnE5kZzIZgULZroc6KZzAmF5ajnyWZW2Era9kRGkhDABxLCsonp8wNvjZxssNknNSoSCpyQsbHxgaGhRfWgv6OPMEDZr1ATr0LQEBlJzZk5Xq03tgc0iOjZxrO20edqRyZlQY6Y+XPymn2+z2RZvsnkffnTuxvqmTKKv8ysnSetsTF4PdlgpjMUndPdw3wNMsslk7iZD2Sg+23jLdD0uC31XQ2lHJWjxsOsHDS371golTxhn3F7ZtfLYZF9drCWKev6cVuYNbAZu3L5KJnNAifCPFPAFEAIc0xpDj9xA4oENHydkdH9hjiwRPuMDSOxZ9ccA4/mBmrt/W/yT/HHhzTutoUFkW8z+RcL24I7"
}
[info] CPU 75.8% | Mem 444MiB
[info] run 3 wins on score

=== Best: 9980 req/s (CPU: 75.8%, Mem: 444MiB) ===
[info] exact CPU: 15.88 core-seconds | 79.567 us/req
[info] saved results/latency-10k/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   175.49ms   150.60ms   169.50ms   956.50ms    1.56s

  1829429 requests in 10.00s, 1797429 responses
  Throughput: 179.71K req/s
  Bandwidth:  11.31MB/s
  Status codes: 2xx=1797429, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1797429 / 1797429 responses (100.0%)
[info] CPU 2485.4% | Mem 16.4GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   144.83ms   141.80ms   144.70ms   211.70ms   610.90ms

  2210584 requests in 10.00s, 2178584 responses
  Throughput: 217.82K req/s
  Bandwidth:  13.71MB/s
  Status codes: 2xx=2178584, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2178584 / 2178584 responses (100.0%)
[info] CPU 2267.3% | Mem 16.5GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   147.44ms   144.40ms   148.10ms   278.80ms   518.20ms

  2171688 requests in 10.00s, 2139688 responses
  Throughput: 213.93K req/s
  Bandwidth:  13.47MB/s
  Status codes: 2xx=2139688, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2139688 / 2139688 responses (100.0%)
[info] CPU 2227.3% | Mem 16.5GiB

=== Best: 217858 req/s (CPU: 2267.3%, Mem: 16.5GiB) ===
[info] input BW: 9.97MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 36 new, 36 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Hmm the symptom is websockets at high connection (16k), this can be annoying to find the issue. Can you reproduce 16k ws echo locally? If you have a ktor build with a playground or example for this I can debug directly on the server

@bjhham

bjhham commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

I'll investigate the WS issue later. It looks like it could be some regression from pending fixes around connection cleanup.

The pipelined profile still being lower than the baseline looks like there's another bottleneck in pipelining with many connections too...

@bjhham

bjhham commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

Added consolidated flush calls and played around with the threads. This helped with the local benchmarks anyway, we'll see how it goes on the server 🤞

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Just a quick note, currently baseline test is being reworked because its results swing a lot between runs, this is related with the fact that some frameworks parse CL much better than TE-chunked and the request distribution varies between runs. Also we are moving away from "all out" tests that try to push as much throughtput as possible in a time frame, to instead pinning the throughput and measure CPU efficiency and tail latencies that spike with garbage collected languages, this typically yields a much more interesting analysis as we can see close to idle and typical workload metrics.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 599,273 6350.8% 4.4GiB -27.1% -53.7%
pipelined 4096 603,452 6235.8% 5.7GiB +3.2% -68.2%
limited-conn 4096 547,968 5224.7% 4.9GiB -17.7% +11.4%
json-comp 4096 194,934 6107.8% 6.4GiB +1.0% +23.1%
json-comp 16384 214,699 6355.9% 13.5GiB +13.3% +20.5%
json-tls 4096 409,641 3480.3% 5.7GiB +4.5% -38.7%
8gbit 512 49,351 0.9870 95.26us 187.0us 4534.0us 449.8% 3.0GiB +0.3% +11.1%
static-tls 1024 227,508 6371.0% 4.5GiB +11.1% +18.4%
async-db 1024 108,331 4778.4% 13.7GiB +4.2% +42.7%
fortunes 1024 58,814 5652.7% 14.1GiB +15.3% +88.0%
baseline-h2 256 546,283 5601.7% 27.4GiB -2.2% -8.1%
baseline-h2 1024 455,187 5787.5% 26.0GiB -16.0% -13.3%
static-h2 256 185,744 5975.0% 22.1GiB -2.1% +38.1%
static-h2 1024 147,280 5776.6% 33.2GiB -18.3% +34.4%
baseline-h2c 256 655,547 5557.3% 29.5GiB +59.0% -3.9%
baseline-h2c 1024 652,471 5796.3% 30.4GiB +61.9% -2.3%
baseline-h2c 4096 523,288 5759.9% 30.9GiB +86.9% -1.0%
json-h2c 1024 289,980 2996.0% 25.9GiB -7.7% -8.2%
json-h2c 4096 318,797 3426.8% 28.7GiB +12.7% -4.0%
baseline-h3 64 392,086 5981.4% 5.2GiB NEW NEW
static-h3 64 114,503 6206.0% 3.8GiB NEW NEW
echo-ws 512 614,627 5947.2% 1.7GiB -39.8% -32.0%
echo-ws 4096 654,892 4079.8% 3.5GiB -33.2% -47.0%
echo-ws 16384 562 186.8% 5.5GiB -99.9% -62.8%
echo-ws-pipeline 512 7,351,282 5522.9% 5.0GiB -34.5% -53.7%
echo-ws-pipeline 4096 5,933,869 3481.6% 11.4GiB -44.3% -12.3%
echo-ws-pipeline 16384 5,331 129.8% 6.0GiB -99.9% -71.0%
latency-1m 1024 997,434 0.9974 62.99us 152640.0us 270464.0us 6562.1% 5.1GiB +13.5% +2.0%
latency-10k 1024 9,981 0.9981 56.03us 147.0us 3309.0us 53.4% 1.6GiB ~0% +252.3%
async 32000 197,020 2160.6% 7.1GiB NEW NEW
Full log
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 19954414,
  "bytes": 1775942846,
  "achieved_rate": 997434.15,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9974,
  "bytes_per_sec": 88771639.69,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 423143,
  "latency_us": {
    "min": 65, "mean": 14914.7, "stdev": 31564.4, "max": 424191,
    "p50": 1109, "p75": 12852, "p90": 50512, "p99": 152640, "p99_9": 270464, "p99_99": 370048
  },
  "status_codes": { "1xx": 0, "2xx": 19954414, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 6562.1% | Mem 5.1GiB
[info] run 3 wins on score

=== Best: 997434 req/s (CPU: 6562.1%, Mem: 5.1GiB) ===
[info] exact CPU: 1256.92 core-seconds | 62.990 us/req
=== Fixed-rate: cpu/req 62.99us | p99 152640.0us | p99.9 270464.0us | rate_ratio 0.9974 ===
[info] saved results/latency-1m/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 199670,
  "bytes": 17770630,
  "achieved_rate": 9981.51,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9982,
  "bytes_per_sec": 888354.20,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 53, "mean": 150.6, "stdev": 1017.0, "max": 43231,
    "p50": 87, "p75": 97, "p90": 113, "p99": 807, "p99_9": 22264, "p99_99": 34768
  },
  "status_codes": { "1xx": 0, "2xx": 199670, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 135.3% | Mem 671MiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 199669,
  "bytes": 17770541,
  "achieved_rate": 9981.36,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 888341.37,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 49, "mean": 157.4, "stdev": 1436.3, "max": 48799,
    "p50": 84, "p75": 94, "p90": 107, "p99": 144, "p99_9": 31000, "p99_99": 46384
  },
  "status_codes": { "1xx": 0, "2xx": 199669, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABM94nDVV32scZRSd/ebOTHYn08lmsm6323RTQ0xsEqVajajVVMVaTEtFtFSKsX3xQf+IUgq+hFCsiBQpIqH4EPIgIiIiIqGUUnwQKSUU8bEPoUgJIj55zrnTtJOZ77u/zr333Ju9Fy9XUTT0c+Q/cf1u6HD5k+jlv/3ibLChkbkTZ1YbG43Nxm/hp3gj+ae1Nbo9cfeJ9Zd23vz81Nryd+duLt86df/43ddXX/1x8erihcUHR668dvGNnaULb18689/762c3lzfe+/ad70/eO/bZK7+8+MfCr0/tzP174MvHzk/envh631977uxZ3/3N7kuPXOvcGrs+uj16tb058lV5v7gxfG34dr6SX2ndGdocupfdzLbST9Pfk7Vk01ZtzbbjL+IbYSX82TgfHjR+aGzhWWmc+/jdD04sPX9y6dDcgedmnp049OjemZl9Y2NDIzY6NjEy1hoe2zU80hpu7Wq1QkiHLeDHhvBYFELEk15pgCRKi5CE0ISIkhi/x/HEuJnFeQHC3DKL8e6GdsCL/z6CBV5ZyHGXhQLvHDY80XVscFLQW4lTxnglhPiKYAe/HRg3g9A0EQkxwn48BTSaYR5fZZBhjKD8qnDVC28RDCMXEMDrtMUA1tchsgzBKZJpWzD0wKgEHAc+FfDfPwulMInEe1SvK9Ck4w6tqVEoxRynKKUY0SMrrJJuZIiZeBaFtXlDY6AxAqi8Bp06L0JBSCOetpwz10ogKKkcQul1ietuUCODjzgMQo2nk7LwJUEGQK9bGtduZgWD1UXmlaA3BbxvuImpiOvE60K1KcrCYd5GssqURsJudb1BUZiy+Zo59F64vfppAinOeIHUfaZmSjlTKlBMPe3IiC6ibcyyq3PmdY/r+G3WzZvUVLLM1ZMP07LGpYl/bA8vpvFGY0SLrAZNjOw7oLdFzkhRmIa4yIBVXTZjbbqOCu+n1bQE1STVEqvU7iZum0TGmOZdCJMQ9OQN110Gpb+2/HraHjKjpg9HW+PVh1+lojxNBkkYN9FJCRREbEgbPGcOZg9pQTTeC4p4Yl3h2tmQOH8AkTG8bbF3KPWWQNF0nXix1JUUXKQgaUnd6lCKaU2jd82Imh55fORHGypnAfPgBcqcaSQJpRwIFsitxQJ4xPyoELiQb3MOe710QALGXjn23NgM3ztIVYY8mjNCOlwIBnfiDwST+k2FDjjCYS9UbzgaR3f7wRk+qR1TqaOVmndYhIvC4+FDTpmTNw/HNS8Dw+sZcnI/UulAlqclVAcw7lmpXQjXB+GvEjkXoF/KTTMcxXcXcPpkSwKFWeXkHSIfO6oAg4N3uD3C2ezWvcpgHcNTpcXiW6wMx/DVR3iu24NAth96T+KrAvmjmuIFtGIjlzPknkE7qedhXitSqx5ak5qVgZYoN2ppWgRayiX0j2I6TkPrNE6ANgsgA01+hmNbSrMQI3qi9YX7HsAkTlOxAgmYcKvfpWl8IiNKUlZrPDetGF9EZFVP+T7cYY5nUE92V4xj19OYpOKWVj3TesboIIj9eMznIKr3hAfS7q73E4zH6d/8bwDC5L5h277cqJRrLsToOBXPXY5yFGpiLCOrVQA21pJJnJp5Ki+QlZZrVM3zimhR+zb+Vcvq1Rq5ce7Zv0CN/wFPzIbx"
}
[info] CPU 75.6% | Mem 1.7GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199653,
  "bytes": 17769117,
  "achieved_rate": 9981.44,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 888347.98,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 50, "mean": 105.1, "stdev": 639.1, "max": 43103,
    "p50": 83, "p75": 94, "p90": 119, "p99": 147, "p99_9": 3309, "p99_99": 33008
  },
  "status_codes": { "1xx": 0, "2xx": 199653, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAu14nC1SXUhTYRg+33vOdnbOdrZznMdpOnPTiqUrp6kTs/UvZrsQESQjBVHqyrqMKETEFg0J3V0Ww2RERe0ipJvKCwmJkIgugmKEVxFdSIgXEqPn++Z5z/ed97y/z/tTM7PglyT5u1R65L0vEz8Ld6XEVkkwRs7KhqE7K+wp+8s+0obyzpU3p+tS8aXk3KWlifzVrfH86Obgl+Ts+Vz36/jc8Qfdz04UEzNnv15ID6wPbVyZGp0e/taf6S0mZjs/xHabd1t+N/+K/ovkQ8vBN5Vz9rJ/sXyl7KVV9OXMrDdj5DyP3VlP1pPypPVVLav9UFPqT+eOY1Nd0zJ6yrvtnfcVzZSZLsuZBfOTkTEK+pq+rk9pu64XrrRacGwrU8ofeV7+TIu0w9ZYga2ydbbEJi4PXR+9ePJY/MjB2nj76aaWcPvhcE2FN1zZVLuvIVxb59T1inKzzOty6iYup6KTpBAeB5HEX7l0yYqG24cToCj1kRvScRhJ1Eo2JciC3MK/TNVE9TQA1qYQqRCrQtwLtcoDQWuTRga4KmhUwquBEBL8USj2Q3yITiG2JhwscAa1KQa+PgSV4KhyWA4YVFMSOYA2KMKrdAA/foGzDbYOnBFgdIML0Bn4S9QIToIlYnDFsEASIXrICHo/qjHECYCPAUcCVA8TG14BkAY3C3EV3pAgjkNABhQDGp/IKQGHhgwGEkTokUy3EWKQaBJRzsEmSWPUTzdg10v3GfUglYTGcjcZjhxgGygm8L1nEMPKBo0go41Uk2hVjLqQ8C2jW3DtoueM7vE2WgLnNbiXUHBJKyzqwSdQfQTUyOFaJPqE6SlB0dMeaPgc+8QUoiRKtqEIKaKvEWQJ8BS8yCgMLbhJoswIdSOiLNKVbt4OTSyEJEZDnbzRCgIHyFDcPExQIORbhV620hMFWIJiRTqQliOxYR5Bc25Cpioh2Pr2FsqG1g0n6lCqUI4f/SjNR2kUs8YeAkC/2CAZyi56xeg/8ieMJQ=="
}
[info] CPU 53.4% | Mem 1.6GiB
[info] run 3 wins on score

=== Best: 9981 req/s (CPU: 53.4%, Mem: 1.6GiB) ===
[info] exact CPU: 11.19 core-seconds | 56.035 us/req
=== Fixed-rate: cpu/req 56.03us | p99 147.0us | p99.9 3309.0us | rate_ratio 0.9981 ===
[info] saved results/latency-10k/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   160.28ms   124.10ms   260.60ms   886.70ms    1.55s

  2002200 requests in 10.00s, 1970200 responses
  Throughput: 196.98K req/s
  Bandwidth:  12.40MB/s
  Status codes: 2xx=1970200, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1970200 / 1970200 responses (100.0%)
[info] CPU 2160.6% | Mem 7.1GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   180.00ms   149.20ms   218.40ms   731.80ms    1.12s

  1782093 requests in 10.00s, 1750093 responses
  Throughput: 174.97K req/s
  Bandwidth:  11.01MB/s
  Status codes: 2xx=1750093, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1750093 / 1750093 responses (100.0%)
[info] CPU 1937.1% | Mem 18.2GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   163.22ms   154.20ms   159.50ms   494.80ms   562.00ms

  1962905 requests in 10.00s, 1930905 responses
  Throughput: 193.05K req/s
  Bandwidth:  12.15MB/s
  Status codes: 2xx=1930905, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1930905 / 1930905 responses (100.0%)
[info] CPU 1776.5% | Mem 18.3GiB

=== Best: 197020 req/s (CPU: 2160.6%, Mem: 7.1GiB) ===
[info] input BW: 9.02MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 30 new, 30 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner

/benchmark -f ktor -t echo-ws --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 Results

Framework: ktor | Test: echo-ws

Test Conn RPS CPU Mem Δ RPS Δ Mem
echo-ws 512 640,680 6059.0% 3.0GiB -37.3% +20.0%
echo-ws 4096 581,756 3886.1% 3.5GiB -40.6% -47.0%
echo-ws 16384 2,995 193.1% 5.3GiB -99.5% -64.2%
Full log
    Latency    806us    750us   1.17ms   1.69ms   6.95ms

  3177801 frames sent in 5.00s, 3177632 frames received
  Throughput: 635.37K req/s
  Bandwidth:  4.25MB/s
  WS upgrades: 512
  WS frames:   3177632
  Latency samples: 3177632 / 3177632 responses (100.0%)
[info] CPU 6247.6% | Mem 3.0GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    801us    748us   1.16ms   1.67ms   6.16ms

  3203493 frames sent in 5.00s, 3203404 frames received
  Throughput: 640.49K req/s
  Bandwidth:  4.28MB/s
  WS upgrades: 512
  WS frames:   3203404
  Latency samples: 3203404 / 3203404 responses (100.0%)
[info] CPU 6059.0% | Mem 3.0GiB

=== Best: 640680 req/s (CPU: 6059.0%, Mem: 3.0GiB) ===
[info] saved results/echo-ws/512/ktor.json
[warn] ktor echo-ws/512: container log was 18872322 bytes, truncated to 8000000
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.99ms   4.32ms   8.58ms   25.80ms   231.90ms

  2824128 frames sent in 5.00s, 2820032 frames received
  Throughput: 563.88K req/s
  Bandwidth:  3.87MB/s
  WS upgrades: 4096
  WS frames:   2820032
  Latency samples: 2820032 / 2820032 responses (100.0%)
[info] CPU 4830.5% | Mem 3.4GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   6.82ms   5.43ms   11.30ms   20.50ms   130.10ms

  2520698 frames sent in 5.00s, 2516983 frames received
  Throughput: 503.26K req/s
  Bandwidth:  3.45MB/s
  WS upgrades: 4096
  WS frames:   2516983
  Latency samples: 2516983 / 2516983 responses (100.0%)
[info] CPU 3808.5% | Mem 3.5GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.91ms   4.76ms   9.66ms   16.90ms   101.30ms

  2912513 frames sent in 5.00s, 2908781 frames received
  Throughput: 581.62K req/s
  Bandwidth:  3.97MB/s
  WS upgrades: 4096
  WS frames:   2908781
  Latency samples: 2908781 / 2908781 responses (100.0%)
[info] CPU 3886.1% | Mem 3.5GiB

=== Best: 581756 req/s (CPU: 3886.1%, Mem: 3.5GiB) ===
[info] saved results/echo-ws/4096/ktor.json
[warn] ktor echo-ws/4096: container log was 150977821 bytes, truncated to 8000000
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    2.52s    2.47s    3.42s    4.64s    4.75s

  11314 frames sent in 5.00s, 506 frames received
  Throughput: 101 req/s
  Bandwidth:  272.90KB/s
  WS upgrades: 10808
  WS frames:   506
  Latency samples: 506 / 506 responses (100.0%)
[info] CPU 1302.4% | Mem 3.2GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   891.87ms   204.30ms    3.06s    4.85s    4.97s

  23647 frames sent in 5.00s, 8960 frames received
  Throughput: 1.79K req/s
  Bandwidth:  382.16KB/s
  WS upgrades: 14907
  WS frames:   8960
  Latency samples: 8960 / 8960 responses (100.0%)
[info] CPU 88.7% | Mem 5.3GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   635.10ms   78.60ms    2.35s    4.77s    4.93s

  29846 frames sent in 5.00s, 14978 frames received
  Throughput: 2.99K req/s
  Bandwidth:  394.94KB/s
  WS upgrades: 15047
  WS frames:   14978
  Latency samples: 14978 / 14978 responses (100.0%)
[info] CPU 193.1% | Mem 5.3GiB

=== Best: 2995 req/s (CPU: 193.1%, Mem: 5.3GiB) ===
[info] saved results/echo-ws/16384/ktor.json
[warn] ktor echo-ws/16384: container log was 603922074 bytes, truncated to 8000000
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 3 new, 27 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner
==============================================
=== ktor / echo-ws / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    2.52s    2.47s    3.42s    4.64s    4.75s

  11314 frames sent in 5.00s, 506 frames received
  Throughput: 101 req/s
  Bandwidth:  272.90KB/s
  WS upgrades: 10808
  WS frames:   506
  Latency samples: 506 / 506 responses (100.0%)
[info] CPU 1302.4% | Mem 3.2GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   891.87ms   204.30ms    3.06s    4.85s    4.97s

  23647 frames sent in 5.00s, 8960 frames received
  Throughput: 1.79K req/s
  Bandwidth:  382.16KB/s
  WS upgrades: 14907
  WS frames:   8960
  Latency samples: 8960 / 8960 responses (100.0%)
[info] CPU 88.7% | Mem 5.3GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   635.10ms   78.60ms    2.35s    4.77s    4.93s

  29846 frames sent in 5.00s, 14978 frames received
  Throughput: 2.99K req/s
  Bandwidth:  394.94KB/s
  WS upgrades: 15047
  WS frames:   14978
  Latency samples: 14978 / 14978 responses (100.0%)
[info] CPU 193.1% | Mem 5.3GiB

for 16k connections, we cant reach the 16k upgrades, this could be that maybe the upgrades take very long to process in the 5 second window?

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner

would the docker logs help here?

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner

if you add the test "echo-ws-limited" this is a upgrade spam test, we can see at low connections, high upgrade count

@bjhham

bjhham commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor -t echo-ws

@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 Results

Framework: ktor | Test: echo-ws

Test Conn RPS CPU Mem Δ RPS Δ Mem
echo-ws 512 895,386 6201.3% 2.7GiB -12.3% +8.0%
echo-ws 4096 1,099,500 5711.8% 6.2GiB +12.2% -6.1%
echo-ws 16384 493,934 4502.3% 7.5GiB -23.5% -49.3%
Full log
  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    583us    535us    921us   1.47ms   3.36ms

  4383509 frames sent in 5.00s, 4383509 frames received
  Throughput: 876.50K req/s
  Bandwidth:  5.85MB/s
  WS upgrades: 512
  WS frames:   4383509
  Latency samples: 4383501 / 4383509 responses (100.0%)
[info] CPU 6343.2% | Mem 2.7GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    571us    527us    898us   1.36ms   3.42ms

  4476933 frames sent in 5.00s, 4476933 frames received
  Throughput: 895.18K req/s
  Bandwidth:  5.98MB/s
  WS upgrades: 512
  WS frames:   4476933
  Latency samples: 4476925 / 4476933 responses (100.0%)
[info] CPU 6201.3% | Mem 2.7GiB

=== Best: 895386 req/s (CPU: 6201.3%, Mem: 2.7GiB) ===
[info] saved results/echo-ws/512/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.14ms   3.06ms   6.79ms   18.90ms   147.30ms

  4646100 frames sent in 5.00s, 4642147 frames received
  Throughput: 928.21K req/s
  Bandwidth:  6.29MB/s
  WS upgrades: 4096
  WS frames:   4642147
  Latency samples: 4642147 / 4642147 responses (100.0%)
[info] CPU 6041.7% | Mem 6.1GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.63ms   2.95ms   6.18ms   11.00ms   34.80ms

  5416129 frames sent in 5.00s, 5412341 frames received
  Throughput: 1.08M req/s
  Bandwidth:  7.32MB/s
  WS upgrades: 4095
  WS frames:   5412341
  Latency samples: 5412339 / 5412341 responses (100.0%)
[info] CPU 6594.8% | Mem 6.2GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.60ms   2.88ms   6.14ms   11.50ms   32.10ms

  5500854 frames sent in 5.00s, 5497503 frames received
  Throughput: 1.10M req/s
  Bandwidth:  7.42MB/s
  WS upgrades: 4096
  WS frames:   5497503
  Latency samples: 5497503 / 5497503 responses (100.0%)
[info] CPU 5711.8% | Mem 6.2GiB

=== Best: 1099500 req/s (CPU: 5711.8%, Mem: 6.2GiB) ===
[info] saved results/echo-ws/4096/ktor.json
[warn] ktor echo-ws/4096: container log was 49714016 bytes, truncated to 8000000
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / echo-ws / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   32.31ms   20.70ms   52.80ms   280.70ms   996.50ms

  1917624 frames sent in 5.00s, 1901240 frames received
  Throughput: 380.14K req/s
  Bandwidth:  2.94MB/s
  WS upgrades: 16384
  WS frames:   1901240
  Latency samples: 1901240 / 1901240 responses (100.0%)
[info] CPU 5096.5% | Mem 7.5GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.21ms   18.30ms   48.20ms   85.90ms    1.19s

  2355270 frames sent in 5.00s, 2338886 frames received
  Throughput: 467.54K req/s
  Bandwidth:  3.52MB/s
  WS upgrades: 16384
  WS frames:   2338886
  Latency samples: 2338886 / 2338886 responses (100.0%)
[info] CPU 3325.1% | Mem 7.5GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   25.70ms   17.30ms   45.50ms   80.70ms    1.24s

  2486058 frames sent in 5.00s, 2469674 frames received
  Throughput: 493.82K req/s
  Bandwidth:  3.70MB/s
  WS upgrades: 16384
  WS frames:   2469674
  Latency samples: 2469674 / 2469674 responses (100.0%)
[info] CPU 4502.3% | Mem 7.5GiB

=== Best: 493934 req/s (CPU: 4502.3%, Mem: 7.5GiB) ===
[info] saved results/echo-ws/16384/ktor.json
[warn] ktor echo-ws/16384: container log was 199029835 bytes, truncated to 8000000
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 3 new, 27 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@bjhham

bjhham commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

I think maybe the 16384 ws connection test might've started connecting faster seeing as how the -40% RPS happened from an unrelated change. I think maybe Ktor just needs to limit TCP connections so that it has a chance to process the requests for this test.

@bjhham

bjhham commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

I've tried using 16384 ws connections in benchmark-lite.sh and found that it always gets 0 regardless of the engine, unsure why that is.

Anyway, let's see if connection limits can provide a means for the server from getting overloaded. This should make a nice safety feature anyway.

@bjhham

bjhham commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor

@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 Results

Framework: ktor | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 221,301 3863.2% 1.5GiB -73.1% -84.2%
pipelined 4096 654,162 6712.5% 8.8GiB +11.8% -50.8%
limited-conn 4096 22,466 1866.7% 1.5GiB -96.6% -65.9%
json-comp 4096 179,547 6173.3% 4.2GiB -7.0% -19.2%
json-comp 16384 161,712 5720.0% 4.9GiB -14.7% -56.2%
json-tls 4096 216,086 4742.1% 7.8GiB -44.9% -16.1%
8gbit 512 13,617 0.2723 ⚠️ 145.68us 201.0us 12268.0us 190.7% 1.7GiB -72.3% -37.0%
static-tls 1024 118,352 6418.2% 3.9GiB -42.2% +2.6%
async-db 1024 101,818 4774.8% 9.9GiB -2.1% +3.1%
fortunes 1024 54,527 5157.6% 11.1GiB +6.9% +48.0%
baseline-h2 256 0 4261.6% 32.3GiB -100.0% +8.4%
baseline-h2 1024 0 4432.4% 32.3GiB -100.0% +7.7%
static-h2 256 0 5338.0% 32.3GiB -100.0% +101.9%
static-h2 1024 0 5681.4% 32.3GiB -100.0% +30.8%
baseline-h2c 256 547,253 5386.2% 31.2GiB +32.7% +1.6%
baseline-h2c 1024 0 3916.9% 32.0GiB -100.0% +2.9%
baseline-h2c 4096 0 4110.7% 31.9GiB -100.0% +2.2%
json-h2c 1024 0 4308.8% 32.2GiB -100.0% +14.2%
json-h2c 4096 0 4381.5% 32.1GiB -100.0% +7.4%
baseline-h3 64 356,103 5851.7% 4.3GiB NEW NEW
static-h3 64 93,211 6171.3% 3.2GiB NEW NEW
echo-ws 512 682,324 5783.9% 1.5GiB -33.2% -40.0%
echo-ws 4096 286,230 4607.0% 1.4GiB -70.8% -78.8%
echo-ws 16384 331,702 5003.4% 1.5GiB -48.6% -89.9%
echo-ws-pipeline 512 6,593,786 5832.6% 7.0GiB -41.2% -35.2%
echo-ws-pipeline 4096 2,805,625 2880.4% 3.7GiB -73.7% -71.5%
echo-ws-pipeline 16384 4,683,845 4866.7% 4.4GiB -47.3% -78.7%
latency-1m 1024 216,688 0.2167 ⚠️ 95.02us 248.0us 23336.0us 2217.2% 2.6GiB -75.3% -48.0%
latency-10k 1024 2,015 0.2015 ⚠️ 120.28us 611.0us 2000384.0us 22.7% 482MiB -79.8% +3.7%
async 32000 15,474 350.7% 494MiB NEW NEW
Full log
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.2167,
  "bytes_per_sec": 19285205.74,
  "error_rate": 0.001663,
  "max_schedule_lag_us": 42104,
  "latency_us": {
    "min": 58, "mean": 256.4, "stdev": 11782.9, "max": 2018303,
    "p50": 130, "p75": 149, "p90": 173, "p99": 248, "p99_9": 23336, "p99_99": 39312
  },
  "status_codes": { "1xx": 0, "2xx": 4334126, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 7070, "read": 0, "write": 0, "timeout": 148, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 2217.2% | Mem 2.6GiB
[info] run 3 wins on score

=== Best: 216688 req/s (CPU: 2217.2%, Mem: 2.6GiB) ===
[info] exact CPU: 411.82 core-seconds | 95.018 us/req
=== Fixed-rate: cpu/req 95.02us | p99 248.0us | p99.9 23336.0us | rate_ratio 0.2167 ===
[warn] offered rate fell short: rate_ratio=0.2167 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 30740,
  "bytes": 2735860,
  "achieved_rate": 1536.85,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.1537,
  "bytes_per_sec": 136779.73,
  "error_rate": 0.202449,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 72, "mean": 10158.6, "stdev": 139576.5, "max": 2017279,
    "p50": 133, "p75": 165, "p90": 224, "p99": 20504, "p99_9": 2002432, "p99_99": 2005504
  },
  "status_codes": { "1xx": 0, "2xx": 30740, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 7652, "read": 0, "write": 0, "timeout": 151, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABLl4nDVUTWhcVRR+99zz3r3z5n9eZ5JMEpOmxLRNW5NgkUYh3YhWBRfFhRi66EpERMSFBpEQaq2h1jCVWFxIKUFCNkIMRUJwEUopRbIopUQtJUjpokjpQlyoBL9z7uu8eXPPvefc73znO/dO35mLWRS51Sh8bD4anVz8PJp6HBa+MkS+uz145PjYa2fNd+ay+cvM0got2CV7w97l5Xg22Ynn3B131f3nFv1tv+t3/La77Ff9LTfvzrqVZAERj+M13uJ1XrebtmP/pI79hx7Rb7RK12gNvw9pgx7QL7RN63TJ7tIju2xX8Fyx5/kKn+O7/DdvxN9zJ57lm/wHkB7wPV7kO/a+XbQ/2w27SVs0T5u0a26Zh+aGuW2umZ/w3jc3zXVz1WybVbXumRWzY5bMmr4ds2iWzRlzwSyYb80lc97MXMBk3szMm68xdMypJbjfeffDTz7qmJlPZ86Z03NmzkxPn/5g+tR7b7//ysuTky8cnzwycfCpQxOHnp04ODTUbo89vX9/oz3W1+rrGxyqtYcarcZgo9XdatRaeCqlmu/2tVKlUitxZU8JFnvfqFQqqa+ltaSUcqmUpCkMn7bgYp9UPFHJw5EkSQUBSZJ6aqSE0RKnlRJz6j3VEoaBrZ7ZYoV8UvJRwrLBI0vCiU/IpyWCQQwPpWkEzIjgYOxixhppJJMXM6IIcJSSTOEmooiYNDoBDmZwRaAWMeLhRyjWAQqISB4PCJsy8sFDMV7EShB+Io7YKibGBE7AIQ9ZH+kvaDoWFvKxZFlIWCGMmVN8GLBYBowYWEAjGDEHOF3UkajAIZukdklYTOJQqZM9SjHWEKuYlrUKMYQkZvUnAOqvk0uUBeY5oywUTkXljKcAj6O9GKVmocmSSvghFRdkt9C1mt1SGVudbC9IuOU4kdoxi5WkLFKVy4FvJLyoSiFdnOd2GmlBDxi9cNtcqViTChsHomXNlxENCGJGTaxzMy8+FremEawuJChTD+2TXHWhW0TwONaqGnmARhBX11rKsCVZlfqB3I8EVey0dFjXBHlAZXQqdpcWWaTXgYGtYPwMjUqRRzEDtwNKUywnTkkm59KBLb42KB0r6dCBYcBL6hgvgsvAZkkyAIyXEDyClHURLFadBpBBpxmeEcSNoqwRwQ6NKMM7TlwVCgV6E/NjeA8jsIBxHPLWkTJD5DA9rzo0he9n5smBQAuG+UXqZ5G+R0jFyFFmBx778qaJwE674SSPKFnEpErjDKl7lWrGPXB9DPgM0SKnJZHtJNLWEfOloR8MTcFy9I2hVxFYRGC/Cjaq8L2aIAOLIlZE/aJcrzp0gZrS4wL9SECuowzRbwphx1SG5+AqYLVHSmpi+QSWi2B4QrvwFjbJWenH24vnDZRWgLYoi6V/QetIT4vokGlRejeCRFJslp//AmwO57ioGKF+aXQUNsTqCgc1Uql6w59EkRUDl6LMck6xK5wLicvUivN7HuWXBH6WOyI3RZDQU71+R1HCryZw3JvflGEWGUWPJkn/gpxdesyk7cM8DqWqyi1C8+SISD8kpYrAcc7G5Zch/EMoVQtxFZnDBWT9T8KOXLVwJhD9O6MRI/Qv0Rcnt0y7saeViGz/A6dmqIs="
}
[info] CPU 47.9% | Mem 432MiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 30155,
  "bytes": 2683795,
  "achieved_rate": 1507.62,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.1508,
  "bytes_per_sec": 134178.36,
  "error_rate": 0.206134,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 72, "mean": 9382.7, "stdev": 134768.3, "max": 2017279,
    "p50": 136, "p75": 163, "p90": 200, "p99": 3557, "p99_9": 2000384, "p99_99": 2006528
  },
  "status_codes": { "1xx": 0, "2xx": 30155, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 7692, "read": 0, "write": 0, "timeout": 138, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAs14nC1RW2xMURS9e5197r1mdFpmRtE2VdqKRz0j9UjTICImEfz48eHLI57lS+LDRGTEYIwp9UzTlJD0A6l+yESkBBEREmkQEREfVCLSD0FExLqn7j377L3O3XvtdfatPdKZ9Dxz3Rt9zH8vDnQe9dpHRg9Oiao/PpWaOGHezNmZzIGSvJUSPqJsClrWnGbtH/2tJ+xLO+j3+/mgNyyG2bAUjgTfgoFgyC/432zZPrav9KJ9orf0D+v6TZ/5gE94hfMma/rNc/xAGXlTNr8xaF6ap+aBGTZ3zSe9oyNasMNk77U5W7RDWtAuHdZ7tDt6gz6vWb5/yVQw3aYPN9CNd3IYX+W7FJFHDiPSRVTEGZT4pZf6/0oWRfySHD7KexmUd/JQBqRHhuSaPJOrck+K0ifdjC8z7paS7Nmxfvuu7T1yRA7Ljizd+o6cZDo27u8oydbMiplL5y2eumBOc3OmsbmxsXHKhObaqZMTVbGqialUanxVLIzFPD82NuHrWB/wob6n0Gj5Pjx4oUeAKPJDH4HCqCrP0gwCoMItjIEFl0UQxXGaFwVE1diGJJpQ4+AVwXxMh8E+7guxGnOZfFL4rQWox27UYRJZ1mED90VEZwWrWN3O+i04yLwtaEAli+Is30vbyf7ztcXxXxKCc4I1zFjJzgHSjqyGVLO4Lyc6LewesPs+tPGdxpQlLHXFSazF8UjMLBYvY3fLaxwibmP+dCpnK55U00cqF5IpTmxZWMHYUFoUUW+SLeppde64ySW2RDNJU1o0iAbaGDcxj95Q7iJe5XMCrwVfBJtxSnBTKPKn4ILgdiRuDXVY1Gur86swg6QN2MTh3LcU1cAbGjedSF5EW4lWtpnGU4+xu3dcPae1wiESMC0Z/UodRxwwcXRoaThp/M01+H9N4yxOpiSY5X64YblWu/ml2agJL4BjFo82vJEwEcY0hkr9B6T4miI="
}
[info] CPU 23.0% | Mem 485MiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 40295,
  "bytes": 3586255,
  "achieved_rate": 2014.59,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.2015,
  "bytes_per_sec": 179298.56,
  "error_rate": 0.154479,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 75, "mean": 7593.9, "stdev": 121228.9, "max": 2010111,
    "p50": 140, "p75": 167, "p90": 200, "p99": 611, "p99_9": 2000384, "p99_99": 2008576
  },
  "status_codes": { "1xx": 0, "2xx": 40295, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 7213, "read": 0, "write": 0, "timeout": 149, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAsV4nC1SXUgUURSe+92f2XHbVVk23cxElsol1HQRLAMR66GoJOiHiAKNKB966C2CapHFbLEQrTCTkkUkRKxAJCwkQiRKFgnpQSTCh32IZVl8CBGjvlmdO/fec77znXO+e2d2xwcCliUT1tYjt3eRdwYeWM25LeCpAOAp2tPYceelmBXPkMQs/iAls3JGLesZ02evmJTJ2ZOeCSflyXpmnKxn1FlxxpyEM+qs2gv2plnXcRMza2pc/VKLalC9ViNqgvumnJUbMiO/cp1WMSJ96rfKqCHdrbMqrXp0l0mbuP3dHrEz5pOZ191mzUzaU/awvW4SJmmyelindVzPse4064xypJGUCY4c+uVPxOUShuQGlpHDEhL4ROsLMljDIh7LmOxm7K3sk6uYY2YaKfLeI4sprInPGMeq+CEWRVKMiY9iXsyJBe5jIiYGxRPRIzru3T7dK7pEv+gVN66cqN93svHI+bNH6w/X11RV1VTVHCytKSrdVVq007+jwPjh9xjlMYBVAAvKQEIpCzYcWhY0AihEmL6k7aVdhkcClTjDWUuojDtRi/x2zmLcQgQ+BiJooncVzUTPkWThGP1CjgoiDaqcjBLyWsDileBHtVFOjoU6VNNuxkNBomZzjVYmIYh3guESyriIEGNqP9VVc35wcYm9VNNEWgTuATSOcw2xaTkY8pFQwjVIMIwGig9Si83CEmHlMMmLKC4zrZ1FrrH8XWKURRl1RCvI7cQFHtwmsxXPBYvVMrmW9d3ObprFAnW0yXYlnGJz14rgX4G6CbRReEv+RiIU5+A+Zwjf+DtHGavEC4G/gnegWaTFbdxJSjHndRLCeEXiAQrwMc3HLjp/oK0WAQWfciH3TG2UFSJYSD/K+wkyweYZLaYXMuEQ/QBjfIOsaZGsOZz8LQbzn927bbmrznexQcdBVIXx5lI/vMpv/gMLPaOi"
}
[info] CPU 22.7% | Mem 482MiB
[info] run 3 wins on score

=== Best: 2015 req/s (CPU: 22.7%, Mem: 482MiB) ===
[info] exact CPU: 4.85 core-seconds | 120.276 us/req
=== Fixed-rate: cpu/req 120.28us | p99 611.0us | p99.9 2000384.0us | rate_ratio 0.2015 ===
[warn] offered rate fell short: rate_ratio=0.2015 (target 10000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-10k/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   10.28ms   10.10ms   10.20ms   12.10ms   31.70ms

  183078 requests in 10.00s, 154743 responses
  Throughput: 15.47K req/s
  Bandwidth:  997.15KB/s
  Status codes: 2xx=154743, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 154743 / 154743 responses (100.0%)
[info] CPU 350.7% | Mem 494MiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   10.19ms   10.10ms   10.20ms   10.50ms   13.10ms

  114619 requests in 10.00s, 114175 responses
  Throughput: 11.41K req/s
  Bandwidth:  735.72KB/s
  Status codes: 2xx=114175, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 114175 / 114175 responses (100.0%)
  Reconnects: 13
[info] CPU 125.1% | Mem 536MiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   10.19ms   10.10ms   10.20ms   11.00ms   12.30ms

  112922 requests in 10.00s, 112394 responses
  Throughput: 11.24K req/s
  Bandwidth:  724.24KB/s
  Status codes: 2xx=112394, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 112394 / 112394 responses (100.0%)
  Reconnects: 17
[info] CPU 137.5% | Mem 552MiB

=== Best: 15474 req/s (CPU: 350.7%, Mem: 494MiB) ===
[info] input BW: 725.34KB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 30 new, 30 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Teamviewer
Id: 126462749
Pw: yzgyca6j

you can connect from browser with a free acc

if you want to try running on server directly, I installed x11 on the ubuntu server, there is a tar with intellij

@MDA2AV

MDA2AV commented Aug 31, 2026

Copy link
Copy Markdown
Owner

I've tried using 16384 ws connections in benchmark-lite.sh and found that it always gets 0 regardless of the engine, unsure why that is.

Anyway, let's see if connection limits can provide a means for the server from getting overloaded. This should make a nice safety feature anyway.

for that conn level you need to use benchmark.sh, pass LOADGEN_DOCKER=true so it uses the dockerized load gen.
so for example go to project root and execute
LOADGEN_DOCKER=true ./scripts/benchmark.sh ktor echo-ws

Repository owner deleted a comment from github-actions Bot Aug 31, 2026
@bjhham

bjhham commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

I'll need an address for that teamviewer login @MDA2AV 😄

@MDA2AV

MDA2AV commented Sep 1, 2026

Copy link
Copy Markdown
Owner

I'll need an address for that teamviewer login @MDA2AV 😄

Hmm all you need is id and pass from TeamViewer site, I tried it. But maybe I'm missing something, haven't used it much.

I went teamview site, logged with google, put id and pw and got access right away

@bjhham

bjhham commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

Here? https://web.teamviewer.com/remote-support
I've never used TeamViewer... It says it can't connect.

@MDA2AV

MDA2AV commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Here? https://web.teamviewer.com/remote-support
I've never used TeamViewer... It says it can't connect.

thats the correct link but the teamviewer session in the server dies after a few hours, Ill renew it today later and let you know

@MDA2AV

MDA2AV commented Sep 1, 2026

Copy link
Copy Markdown
Owner

I added a discord section for server direct access too, if/when you need, just ping there and when I have server access, Ill just dm the details. The server has a running max plan claude cli running too if needed

@bjhham

bjhham commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f ktor

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 721,230 6324.3% 4.5GiB -12.3% -52.6%
pipelined 4096 601,954 6482.9% 17.2GiB +2.9% -3.9%
limited-conn 4096 430,408 5212.8% 4.8GiB -35.3% +9.1%
json-comp 4096 188,216 6212.2% 6.7GiB -2.5% +28.8%
json-comp 16384 181,992 6041.2% 11.4GiB -4.0% +1.8%
json-tls 4096 381,472 5142.7% 5.6GiB -2.7% -39.8%
8gbit 512 49,338 0.9868 131.47us 268.0us 12172.0us 595.9% 2.9GiB +0.3% +7.4%
static-tls 1024 238,584 6276.1% 3.6GiB +16.5% -5.3%
async-db 1024 105,861 4922.5% 9.0GiB +1.8% -6.2%
fortunes 1024 57,593 5198.3% 12.1GiB +12.9% +61.3%
baseline-h2 256 525,221 5584.4% 31.2GiB -6.0% +4.7%
baseline-h2 1024 482,883 5938.2% 29.9GiB -10.9% -0.3%
static-h2 256 192,706 5855.8% 24.9GiB +1.6% +55.6%
static-h2 1024 180,431 5823.8% 23.4GiB +0.1% -5.3%
baseline-h2c 256 596,226 5626.9% 29.1GiB +44.6% -5.2%
baseline-h2c 1024 575,246 5722.9% 29.9GiB +42.8% -3.9%
baseline-h2c 4096 414,800 5588.4% 30.0GiB +48.1% -3.8%
json-h2c 1024 292,163 4936.3% 26.5GiB -7.0% -6.0%
json-h2c 4096 267,051 4851.8% 27.3GiB -5.6% -8.7%
baseline-h3 64 365,812 5972.5% 4.8GiB NEW NEW
static-h3 64 106,862 6332.5% 3.5GiB NEW NEW
echo-ws 512 1,223,502 6414.7% 2.6GiB +19.8% +4.0%
echo-ws 4096 1,226,229 5831.7% 6.1GiB +25.1% -7.6%
echo-ws 16384 391,664 3230.2% 7.7GiB -39.3% -48.0%
echo-ws-pipeline 512 13,045,249 6345.6% 9.8GiB +16.3% -9.3%
echo-ws-pipeline 4096 13,840,569 5813.0% 12.9GiB +30.0% -0.8%
echo-ws-pipeline 16384 6,316,685 4361.1% 19.4GiB -28.9% -6.3%
latency-1m 1024 750,454 0.7505 ⚠️ 84.27us 5531648.0us 5982208.0us 6567.0% 5.7GiB -14.6% +14.0%
latency-10k 1024 9,982 0.9982 84.52us 180.0us 5182.0us 80.6% 504MiB ~0% +8.4%
async 32000 211,137 2574.0% 15.8GiB NEW NEW
Full log
  "duration_s": 20.008,
  "requests": 15014763,
  "bytes": 1336313907,
  "achieved_rate": 750453.52,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.7505,
  "bytes_per_sec": 66790363.48,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 6417970,
  "latency_us": {
    "min": 75, "mean": 2815619.9, "stdev": 1453555.3, "max": 6422527,
    "p50": 2909184, "p75": 3988480, "p90": 4679680, "p99": 5531648, "p99_9": 5982208, "p99_99": 6227968
  },
  "status_codes": { "1xx": 0, "2xx": 15014763, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 6567.0% | Mem 5.7GiB
[info] run 3 wins on score

=== Best: 750454 req/s (CPU: 6567.0%, Mem: 5.7GiB) ===
[info] exact CPU: 1265.30 core-seconds | 84.270 us/req
=== Fixed-rate: cpu/req 84.27us | p99 5531648.0us | p99.9 5982208.0us | rate_ratio 0.7505 ===
[warn] offered rate fell short: rate_ratio=0.7505 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 199614,
  "bytes": 17765646,
  "achieved_rate": 9978.62,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9979,
  "bytes_per_sec": 888097.49,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 67, "mean": 197.4, "stdev": 1311.8, "max": 46527,
    "p50": 105, "p75": 114, "p90": 126, "p99": 1067, "p99_9": 24184, "p99_99": 39472
  },
  "status_codes": { "1xx": 0, "2xx": 199614, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 155.1% | Mem 512MiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199637,
  "bytes": 17767693,
  "achieved_rate": 9980.25,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9980,
  "bytes_per_sec": 888242.24,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 66, "mean": 138.7, "stdev": 694.6, "max": 41119,
    "p50": 105, "p75": 114, "p90": 125, "p99": 176, "p99_9": 5070, "p99_99": 36208
  },
  "status_codes": { "1xx": 0, "2xx": 199637, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABN94nE1VTWhcVRS+c+65983Lm8nMOJmEJGoMUsUkWhoQlSoVoXYjFsQWKgUJUoRqrYu6EAQlimIUKRYlixiLSHElUrIowUV3diESRKQLkSBSsgoiRUqR4vm+86aYlzfvvnvP+c453/l5d753rh9C+UDwv1g/G3w590E48JdvvNvIot3RqXvuWziz3LjW+DRuxR29kleam+Va++boL/21qdWZ7T0b8zf2XX10/cDOwa+eufT85gu/Le2cuP7KpVN/vHb59MVXfz21cvLzk7+f+Hdp49jukZuHbxzafOr84z8+8ufiJ3uX567t2Zg9O/Pz1MeT24Of+ju977vvdy+O7rS2q83q25Hdcr25Ul4orhffFbeKd/KtfDmv56vpfPonLutuXI0XdDNekZvyjfzdOCtbja3G1401u95abbx+5ujR544/ffzJZxcWH1qYm1u8e3xqbGp8fHTsjm6rO5a7OeeWtFrN5kjIrZxHREZ0REUlZLubGmwdmlGi0SAaRSQHjWoPWwa78B7EBDQJntCTxEMtRNQObStCElKQEC35EnhFSYpLpQK+vVKqNEQT0Y6JJAAmKXhUmCNDoKgDvUvMsvRNAVIh48eERCYpnpQAJloJJAuqWVDKeNp8jaZvskKLfY/DVtF9AJopT5ovtItYSoJDG+BltjB1Qp0G8ehsVSrPEYPtqDNWAaKSGixkWGhn2JQBHQfT/dpOcNWUwZkRD3XfT6aIoCExzbBgMZkQEZO7VqjzTLTAbPDQdaVoMs9qrCWQo4w2ZHJU0yAIwsHsKu0KBM2e5YxcFZ4O96wtfI/NwJpIhoa4ChSTMHuIAutUh6+ooUC40v0kS8GCTsyT1vmw7Tqb8AXROhHJ08f3QFYUucnuv3Oj1KRNpsi8Qa2oaqZjhdcwqpaSZS04K1Stb3jJwgYmYkI1J2kr3YPZml+WrbJwgaFtHfIj94v0EKBO2tuEdOgb+RuWVwW1np2VDCzJjOaBRVojg3LqDEyyZMSJWTAZ25m09aAu0eSdBjY6nhZy0vGaSITq2HHPM++1XpAG+g4Jo7EZnDrPMvuEwpgIUKC4l2eydCFwdQ68QgtPrDg7cDjW6daBlRBoU/73mKwK2tYxFWvR/bQG9CETPIeR2RjOIecN88HzTPteI6Q1YzXBcAMlUJHU67tj0Kb1Or4aEXDEGRYWNn0oke3M4YRz9ZggX2a3EigS6wFZoY5Ln6IRch4BTYG+UrGj2brQ8ErO0Tp9BUnTYWPb0tvH5Nq0wNkVs5dehCtoax3OsSGLhWaWWE9uV8KALjCjpdYsMrETnsnhoFavH0xq9Zlgp6U3DoNlR/s8LJwwl8L0Zx3UpAIKW5o7pELRGAwpY37f7k46oigz/7FPTalYmhZ9CBjiBsYuV0po/XGgaSNS2ZapRgO0UsxDbqIs8amTYSJyBpQNX/3fpBVOVqJg5EdSLsMGKuy7xY6tTK9tvYfum7aqQmdW8pjRVsnDtn5JPhI5bWpLMmMJ+CLKiyZbyBHbetue1gIz8qbdQR6Ul+WHhhyySdGRD6M9StkvB+VLkXlL2LQtK9OZlcN2FA1djpneG/JZtL0nMLru5SCYNpz93s+G3Iavtjdrd7KbrUYXbKtTN3Nh29FszLNh8Rnq1K2Ktx6/yGgkErZX9gkjDPIfunOGAw=="
}
[info] CPU 83.9% | Mem 504MiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199662,
  "bytes": 17769918,
  "achieved_rate": 9981.54,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9982,
  "bytes_per_sec": 888356.93,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 65, "mean": 136.7, "stdev": 562.2, "max": 35423,
    "p50": 106, "p75": 114, "p90": 125, "p99": 180, "p99_9": 5182, "p99_99": 29688
  },
  "status_codes": { "1xx": 0, "2xx": 199662, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABQl4nEVVQYhVZRT+77n//e+7c33vOT7H5+gMY9hYaSoSpjWYVLpIiYTAWpkkLgpEt7WqwcjIQlJciES0EBciIi4sXLSIaFEi0SJicCEi0kokhlbR933nf9O8effd+//nP+c73/nOuVMnzw5CaC4G/yvzb6GHs5+G3Y984eMixpCWrVwzteX5fSeuF6fsq3I+/lOdq682l9oH3Qsrfhz+NH1l9symh1u/2fnLri/3Lux7fODOwbuH5o/een/x2J3jp0/cPv7vsTPHfnvv/pEf3n186I+3/jqwuP/enq93fz93fvvDzac2Lmy4tX5x5vLUwuTN4d8rb6y4O357+Y3etd7t9lp7c+xuZ7Ez38x3HtSX6oV0LV1OV6uL1e/x23guXoon45/lhfKj8r5dsXvFefu5eFRcL24V88Xp4sPDb+85ePiVDS9teXrnxo1bXly17tlVU1NPbpjqreuMremtXjHWS8vj6s6y5TbWC50xSz0LHUtIuBdTjBZjjSvvOtHMYsCK4WIl/s0CFlJpKXAncAXfoG+gAc9wtcJChYeav3BTWUOjDu2wUcuw4RmrIyzgsvIQuEzgwlg8wSU6Mznw2+BOGzxGv69sUiAFJCJaG90DYdVw10Ydpq+uABoR1XRTAUEp/y3hMuMBnpJ7DrHUHbMJ0AWMaBhyIsHD0GULa8Fh1lptIr2SBll74BpPrW+WWJpQmooL2NzFUxxqO8lVogGZYG5YZNAgV21U7LxP5rr4iCfSWkdtIj8E5K4DY5FK4XWUXVq3+IB05kjum6W6ls71EHwmMMl7ZZkImhgVICp6jEnZJyz3o8iDoerEU2TQb4No5g1zdvmwcI18m5/MoaucPeXh7IakQgQn3vVm/eQucYCbZU7OP0onZdH4rrVJQJjrBIL1napGHJtiVVlogshs6chBjBQvwrhdj0TJlHNMVkj4wIEMvIggvIrOAmHlVJxpG48qcy0gdDIjXUEm/HqVa/BNVqB5G7chtvs2yL03M9KCQpdY34HgQ9Uqd45NS2M42s2wGWdtJrLMn0xb+L+9mdp4VCdknpY4lgDYTvivPRscSjloLUOKnSVSycelu4bJQs3dpYjG/vI+zO2K6WORcNki0fuDZn2RqzMucwGMzNgRuoQgOmcyNm7Wt+TyGymPmvMBp6i1zzxYtMbygnVNCSPIKhtmSioNAHkPnDg63RChZgVJkujYsxxzQfGdG8ebNeMyhrtEriofZM5fOZp6uWeCTrLlOESc0yRyRqOgETF5mIhPWbkSo0u1iXlE+SBwYOK2S7woNBVT+YxWz47nYg81AB1zUB1FXLvUL86GQlf+sqicYEDQG8WVWmrcVHyRiHAyRb3x9aMWiJ0s2SgViK2kDFz8WFYlsZbyeyBPYroruUGfeoR163wjZvAKJh+JHqzkW868Fb36SDrxJN6DQUVWXZO5WfIZ4kVUvSoIpcrDQMXwMcPhi0s7oiZI3AN7zvlxkwErpOZpbBZLfXtKpE7j+4wE+I69ad8VuEzbB+jx2vbCcJNthel6nN2mdpqwbmQjB9tEvLGPu0nYcRKttc8KBtumqTFQ4XZgYdpexv0EbI4KpsFrTYP1HImzsNqvV2atV+ysvWpfFHKIIfJJAbvXAOcJs102Z8C63X6N8NjHiWF8A2YzzG8aJ45w7nBO9W2zvY7fgb0AVBWOzOFbKgOufF7gdkLDbrMGsuIPQckQ2P4DXGKEXg=="
}
[info] CPU 80.6% | Mem 504MiB
[info] run 3 wins on score

=== Best: 9982 req/s (CPU: 80.6%, Mem: 504MiB) ===
[info] exact CPU: 16.87 core-seconds | 84.517 us/req
=== Fixed-rate: cpu/req 84.52us | p99 180.0us | p99.9 5182.0us | rate_ratio 0.9982 ===
[info] saved results/latency-10k/1024/ktor.json
httparena-bench-ktor
httparena-bench-ktor

==============================================
=== ktor / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   182.81ms   154.90ms   180.00ms    1.09s    1.70s

  1750037 requests in 10.00s, 1718037 responses
  Throughput: 171.77K req/s
  Bandwidth:  10.81MB/s
  Status codes: 2xx=1718037, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1718037 / 1718037 responses (100.0%)
[info] CPU 2800.0% | Mem 15.7GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   159.80ms   156.60ms   159.20ms   310.10ms   575.10ms

  1999375 requests in 10.00s, 1967375 responses
  Throughput: 196.70K req/s
  Bandwidth:  12.38MB/s
  Status codes: 2xx=1967375, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1967375 / 1967375 responses (100.0%)
[info] CPU 2639.8% | Mem 15.8GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   149.46ms   145.60ms   148.00ms   321.90ms   548.70ms

  2143376 requests in 10.00s, 2111376 responses
  Throughput: 211.09K req/s
  Bandwidth:  13.29MB/s
  Status codes: 2xx=2111376, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2111376 / 2111376 responses (100.0%)
[info] CPU 2574.0% | Mem 15.8GiB

=== Best: 211137 req/s (CPU: 2574.0%, Mem: 15.8GiB) ===
[info] input BW: 9.67MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor.json
httparena-bench-ktor
httparena-bench-ktor
[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/results/ktor.json - 30 new, 30 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

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