Skip to content

Upgrade userver to 3 1#961

Open
botanegg wants to merge 4 commits into
MDA2AV:mainfrom
botanegg:upgrade-userver-to-3-1
Open

Upgrade userver to 3 1#961
botanegg wants to merge 4 commits into
MDA2AV:mainfrom
botanegg:upgrade-userver-to-3-1

Conversation

@botanegg

@botanegg botanegg commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Description

Enabled: json-tls
Move json handler to new json::StringBuilder based ToJsonString() method


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

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

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


Run benchmarks locally

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

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

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

@botanegg

botanegg commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f userver --save

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

⚠️ /benchmark --save cannot start: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@botanegg botanegg force-pushed the upgrade-userver-to-3-1 branch 2 times, most recently from b8308ac to f0a621c Compare July 1, 2026 14:48
@botanegg

botanegg commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f userver --save

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: userver | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,096,853 6650.5% 229MiB +82.0% +15.1%
baseline 4096 1,028,328 6379.7% 481MiB +5.1% +8.1%
pipelined 512 0 5197.0% 268MiB -100.0% +2.7%
pipelined 4096 0 5507.4% 2.1GiB -100.0% +139.5%
limited-conn 512 806,899 6117.2% 246MiB +15.0% +2.5%
limited-conn 4096 855,622 6219.4% 611MiB +0.7% +5.7%
json 4096 654,415 6361.1% 614MiB +212.3% +5.9%
json-comp 512 296,585 6505.3% 266MiB +184.5% +6.0%
json-comp 4096 298,867 6368.8% 684MiB +177.7% +25.3%
json-comp 16384 294,503 6348.4% 1.7GiB +175.2% +21.4%
json-tls 4096 548,390 6389.3% 807MiB NEW NEW
upload 32 706 3348.4% 1.6GiB +1.0% +45.5%
upload 256 644 6584.7% 8.2GiB +3.4% +110.3%
api-4 256 35,595 402.7% 210MiB +64.1% +9.4%
api-16 1024 119,797 1797.3% 394MiB +125.5% +24.7%
static 1024 165,387 6542.9% 532MiB ~0% +21.5%
static 4096 187,331 6394.9% 1.2GiB -0.6% +32.0%
static 6800 193,325 6503.3% 1.8GiB -0.5% +38.5%
async-db 1024 234,832 5455.5% 330MiB -1.6% +9.6%
baseline-h2 256 0 6424.3% 337MiB NEW NEW
baseline-h2 1024 0 6477.0% 964MiB NEW NEW
static-h2 256 0 6549.6% 262MiB NEW NEW
static-h2 1024 0 6395.9% 600MiB NEW NEW
Full log
[info] CPU 6508.5% | Mem 273MiB

[run 3/3]
starting benchmark...
17.
23.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
53Stopped all clients for thread #49
. Stopping all clients.

finished in 5.03s, 992520.80 req/s, 20.83MB/s
requests: 4962604 total, 4970796 started, 4962604 done, 0 succeeded, 4962604 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 4962629 4xx, 0 5xx
traffic: 104.17MB (109229069) total, 18.97MB (19892756) headers (space savings 95.64%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:      285us     32.39ms      8.18ms      3.30ms    68.82%
time for connect:     4.91ms     29.96ms     15.99ms      6.64ms    58.98%
time to 1st byte:    17.49ms     42.38ms     27.83ms      5.13ms    65.23%
req/s           :    3392.69     4384.65     3876.71      224.56    65.63%
[info] CPU 6500.7% | Mem 280MiB

=== Best: 0 req/s (CPU: 6549.6%, Mem: 262MiB) ===
[info] saved results/static-h2/256/userver.json
httparena-bench-userver
httparena-bench-userver

==============================================
=== userver / static-h2 / 1024c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...

30.
progress: Warm-up phase is over for thread #6223% of clients started.

12.
.Main benchmark duration is started for thread #8.

33.
.Warm-up phase is over for thread #32.
progress: 81
19.
% of clients started
4.

53.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
1. Stopping all clients.
6Stopped all clients for thread #56
. Stopping all clients.
24. Stopping all clients.. Stopping all clients.

22
. Stopping all clients.
60. Stopping all clients.
36. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #
25. Stopping all clients.

finished in 5.06s, 926982.20 req/s, 19.49MB/s
requests: 4634911 total, 4667679 started, 4634911 done, 0 succeeded, 4634911 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 4634921 4xx, 0 5xx
traffic: 97.44MB (102173996) total, 17.84MB (18708644) headers (space savings 95.61%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:      143us    157.00ms     34.46ms     12.43ms    72.84%
time for connect:     4.14ms    125.87ms     55.74ms     32.94ms    56.15%
time to 1st byte:    51.66ms    202.29ms    123.94ms     28.82ms    69.14%
req/s           :     668.01     3066.30      905.09      264.53    92.87%
[info] CPU 6395.9% | Mem 600MiB

[run 2/3]
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
.

.Main benchmark duration is started for thread #41.


27. Stopping all clients.
. Stopping all clients.
. Stopping all clients.
7. Stopping all clients.

finished in 5.06s, 922091.40 req/s, 19.39MB/s
requests: 4610457 total, 4643225 started, 4610457 done, 0 succeeded, 4610457 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 4610469 4xx, 0 5xx
traffic: 96.93MB (101636034) total, 17.75MB (18610836) headers (space savings 95.61%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:      322us    125.34ms     33.82ms     12.56ms    71.41%
time for connect:     4.33ms    127.68ms     56.37ms     33.49ms    56.93%
time to 1st byte:    37.53ms    170.89ms    116.50ms     25.25ms    69.43%
req/s           :     635.17     1658.07      900.28      180.54    77.25%
[info] CPU 6561.5% | Mem 644MiB

[run 3/3]
starting benchmark...
33.

46Main benchmark duration is started for thread #63.
.Warm-up started for thread #
4Main benchmark duration is started for thread #46.
.
60.
.
.Warm-up phase is over for thread #45.
3.
.



62.
37Main benchmark duration is started for thread #62.
.Main benchmark duration is started for thread #56
.Main benchmark duration is started for thread #Warm-up phase is over for thread #3725.
progress: .62% of clients started


TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
14

15. Stopping all clients.
23
34. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #35. Stopping all clients.

48. Stopping all clients.

finished in 5.07s, 925026.00 req/s, 19.44MB/s
requests: 4625130 total, 4657898 started, 4625130 done, 0 succeeded, 4625130 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 4625141 4xx, 0 5xx
traffic: 97.22MB (101939323) total, 17.79MB (18650020) headers (space savings 95.62%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:      194us    119.45ms     33.86ms     13.71ms    70.26%
time for connect:     4.60ms    122.01ms     54.94ms     32.65ms    57.03%
time to 1st byte:    56.16ms    174.68ms    116.14ms     27.26ms    72.17%
req/s           :     606.42     1732.58      903.14      191.34    69.24%
[info] CPU 6448.8% | Mem 643MiB

=== Best: 0 req/s (CPU: 6395.9%, Mem: 600MiB) ===
[info] saved results/static-h2/1024/userver.json
httparena-bench-userver
httparena-bench-userver
[info] skip: userver does not subscribe to baseline-h2c
[info] skip: userver does not subscribe to json-h2c
[info] skip: userver does not subscribe to baseline-h3
[info] skip: userver does not subscribe to static-h3
[info] skip: userver does not subscribe to gateway-64
[info] skip: userver does not subscribe to gateway-h3
[info] skip: userver does not subscribe to production-stack
[info] skip: userver does not subscribe to unary-grpc
[info] skip: userver does not subscribe to unary-grpc-tls
[info] skip: userver does not subscribe to stream-grpc
[info] skip: userver does not subscribe to stream-grpc-tls
[info] skip: userver does not subscribe to echo-ws
[info] skip: userver does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@botanegg botanegg marked this pull request as draft July 1, 2026 20:25
@botanegg botanegg force-pushed the upgrade-userver-to-3-1 branch from f0a621c to d9180f8 Compare July 2, 2026 06:46
@botanegg

botanegg commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f userver --save

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: userver | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,013,429 6462.3% 223MiB +68.2% +12.1%
baseline 4096 1,023,845 6397.2% 440MiB +4.7% -1.1%
pipelined 512 1,432,437 6697.5% 268MiB -1.2% +2.7%
pipelined 4096 1,313,040 6737.5% 873MiB -2.1% -2.8%
limited-conn 512 833,674 6194.6% 253MiB +18.8% +5.4%
limited-conn 4096 862,744 6164.9% 590MiB +1.5% +2.1%
json 4096 660,436 6550.5% 557MiB +215.2% -4.0%
json-comp 512 301,634 6544.9% 257MiB +189.3% +2.4%
json-comp 4096 294,876 6576.3% 596MiB +174.0% +9.2%
json-comp 16384 296,534 6275.8% 1.6GiB +177.1% +14.3%
upload 256 632 6735.6% 4.0GiB +1.4% +2.6%
api-4 256 36,727 402.3% 207MiB +69.3% +7.8%
api-16 1024 123,138 1793.4% 387MiB +131.8% +22.5%
static 1024 163,130 6608.7% 440MiB -1.3% +0.5%
static 4096 186,922 6560.8% 930MiB -0.8% -0.1%
static 6800 192,268 6410.8% 1.3GiB -1.0% ~0%
async-db 1024 240,730 5662.5% 302MiB +0.9% +0.3%
Full log
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    21.96ms   10.10ms  89.45ms   67.83%
    Req/Sec     2.94k   406.33    16.17k    97.73%
  953366 requests in 5.10s, 56.64GB read
Requests/sec: 186922.67
Transfer/sec:     11.10GB
[info] CPU 6560.8% | Mem 930MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    22.02ms   10.12ms 115.22ms   67.71%
    Req/Sec     2.93k   349.25    13.19k    97.30%
  950142 requests in 5.10s, 56.45GB read
Requests/sec: 186324.53
Transfer/sec:     11.07GB
[info] CPU 6525.4% | Mem 966MiB

=== Best: 186922 req/s (CPU: 6560.8%, Mem: 930MiB) ===
[info] saved results/static/4096/userver.json
httparena-bench-userver
httparena-bench-userver

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

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    36.51ms   21.09ms 219.40ms   74.30%
    Req/Sec     3.01k   363.31    12.07k    96.87%
  975635 requests in 5.10s, 57.96GB read
Requests/sec: 191279.60
Transfer/sec:     11.36GB
[info] CPU 6437.6% | Mem 1.4GiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    36.06ms   19.80ms 242.34ms   73.41%
    Req/Sec     3.02k   406.43    14.08k    97.39%
  980485 requests in 5.10s, 58.25GB read
Requests/sec: 192226.03
Transfer/sec:     11.42GB
[info] CPU 6529.3% | Mem 1.4GiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    35.89ms   19.17ms 235.88ms   71.59%
    Req/Sec     3.02k   392.90    13.36k    97.33%
  980323 requests in 5.10s, 58.23GB read
Requests/sec: 192268.53
Transfer/sec:     11.42GB
[info] CPU 6410.8% | Mem 1.3GiB

=== Best: 192268 req/s (CPU: 6410.8%, Mem: 1.3GiB) ===
[info] saved results/static/6800/userver.json
httparena-bench-userver
httparena-bench-userver

==============================================
=== userver / async-db / 1024c (tool=gcannon) ===
==============================================
[info] resetting postgres for a clean per-profile baseline
[info] starting postgres sidecar
httparena-postgres
[info] postgres ready (seeded)
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.74ms   3.16ms   6.49ms   11.80ms   18.40ms

  2368930 requests in 10.00s, 2368930 responses
  Throughput: 236.84K req/s
  Bandwidth:  913.31MB/s
  Status codes: 2xx=2368930, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2368926 / 2368930 responses (100.0%)
  Reconnects: 94445
  Per-template: 472246,473689,475031,474890,473070
  Per-template-ok: 472246,473689,475031,474890,473070
[info] CPU 5462.9% | Mem 309MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.68ms   3.12ms   6.35ms   11.50ms   17.40ms

  2407300 requests in 10.00s, 2407308 responses
  Throughput: 240.66K req/s
  Bandwidth:  928.01MB/s
  Status codes: 2xx=2407308, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2407303 / 2407308 responses (100.0%)
  Reconnects: 96245
  Per-template: 480398,481192,482326,482475,480912
  Per-template-ok: 480398,481192,482326,482475,480912
[info] CPU 5662.5% | Mem 302MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.67ms   3.14ms   6.27ms   11.20ms   16.60ms

  2395822 requests in 10.00s, 2395825 responses
  Throughput: 239.53K req/s
  Bandwidth:  923.82MB/s
  Status codes: 2xx=2395825, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2395824 / 2395825 responses (100.0%)
  Reconnects: 95884
  Per-template: 477799,478707,480214,480528,478576
  Per-template-ok: 477799,478707,480214,480528,478576
[info] CPU 5623.0% | Mem 305MiB

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

@botanegg botanegg marked this pull request as ready for review July 2, 2026 10:34
@botanegg botanegg marked this pull request as draft July 2, 2026 10:35
@botanegg

botanegg commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f userver -t json-tls --save

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: userver | Test: json-tls

Test Conn RPS CPU Mem Δ RPS Δ Mem
json-tls 4096 553,998 6484.2% 670MiB NEW NEW
Full log
[info] available CPUs: 128
[info] framework: userver (userver, C++)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,json-tls,upload,api-4,api-16,static,async-db
[info] building image: httparena-userver
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 667B done
#1 DONE 0.1s

#2 [internal] load metadata for ghcr.io/userver-framework/ubuntu-24.04-userver:v3.1
#2 DONE 0.8s

#3 [internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [builder 1/4] FROM ghcr.io/userver-framework/ubuntu-24.04-userver:v3.1@sha256:a3b6f5b1c0e134e96d246461a7ee025831ae8d6b995ec1e3ebef7c589b61e467
#4 resolve ghcr.io/userver-framework/ubuntu-24.04-userver:v3.1@sha256:a3b6f5b1c0e134e96d246461a7ee025831ae8d6b995ec1e3ebef7c589b61e467 0.0s done
#4 DONE 0.0s

#5 [internal] load build context
#5 transferring context: 36.62kB done
#5 DONE 0.0s

#6 [builder 2/4] WORKDIR /src
#6 CACHED

#7 [builder 3/4] COPY userver_benchmark/ ./
#7 CACHED

#8 [runner 1/4] WORKDIR /app
#8 CACHED

#9 [builder 4/4] RUN mkdir build && cd build &&     cmake -DCMAKE_BUILD_TYPE=Release           -DCMAKE_CXX_FLAGS="-march=native"           -DCMAKE_C_FLAGS="-march=native" .. &&     cmake --build . -j $(nproc)
#9 CACHED

#10 [runner 2/4] COPY --from=builder /src/configs/config-vars.httparena.yaml ./configs/config_vars.yaml
#10 CACHED

#11 [runner 3/4] COPY --from=builder /src/configs/static_config.yaml ./configs/
#11 CACHED

#12 [runner 4/4] COPY --from=builder /src/build/userver_httparena ./
#12 CACHED

#13 exporting to image
#13 exporting layers done
#13 exporting manifest sha256:e94e117a1822abdd2fdaa464f30aacc2b5c6001ed608c5aba8440af10d0bbc02 done
#13 exporting config sha256:5a8ec2c42920e1e6a6fd7f197c342d8957168157830a7c7a71d05e9ac3dd3d48 done
#13 exporting attestation manifest sha256:ee8a6a50a5c20de45ad9c6916059f1944d5ca720fb9406e4fa99886555141afe 0.0s done
#13 exporting manifest list sha256:c10744dbf25b2e2c3499f9ebe8eaccc9e6239b82bb5a1eef8b191ab9d9d9b3b9 0.0s done
#13 naming to docker.io/library/httparena-userver:latest
#13 naming to docker.io/library/httparena-userver:latest done
#13 unpacking to docker.io/library/httparena-userver:latest 0.0s done
#13 DONE 0.1s

 �[33m1 warning found (use docker --debug to expand):
�[0m - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 19)
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)

==============================================
=== userver / json-tls / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.79ms    5.92ms 133.79ms   95.70%
    Req/Sec     8.67k     1.48k   17.82k    95.66%
  2825587 requests in 5.10s, 9.77GB read
Requests/sec: 553998.00
Transfer/sec:      1.91GB
[info] CPU 6484.2% | Mem 670MiB

[run 2/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.75ms    5.67ms 142.26ms   95.02%
    Req/Sec     8.67k     1.50k   22.92k    96.08%
  2812553 requests in 5.10s, 9.72GB read
Requests/sec: 551496.01
Transfer/sec:      1.91GB
[info] CPU 6654.1% | Mem 764MiB

[run 3/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.90ms    6.57ms 152.55ms   96.96%
    Req/Sec     8.64k     1.48k   22.05k    95.65%
  2807496 requests in 5.10s, 9.70GB read
Requests/sec: 550501.50
Transfer/sec:      1.90GB
[info] CPU 6394.2% | Mem 796MiB

=== Best: 553998 req/s (CPU: 6484.2%, Mem: 670MiB) ===
[info] saved results/json-tls/4096/userver.json
httparena-bench-userver
httparena-bench-userver
[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/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@botanegg

botanegg commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

@MDA2AV LGTM

@botanegg botanegg marked this pull request as ready for review July 2, 2026 11:00
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.

1 participant