Skip to content

[Java] Spring Boot: Enable JSON TLS#665

Merged
MDA2AV merged 2 commits intoMDA2AV:mainfrom
Kaliumhexacyanoferrat:spring-boot-json-lts
Apr 27, 2026
Merged

[Java] Spring Boot: Enable JSON TLS#665
MDA2AV merged 2 commits intoMDA2AV:mainfrom
Kaliumhexacyanoferrat:spring-boot-json-lts

Conversation

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator

Description

There seems to be no way to configure multiple endpoints via application.yaml so we use the same way as was already used by @asvanberg


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

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

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


Run benchmarks locally

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

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

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

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

/benchmark -f spring-boot -t json-tls --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 --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.

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

/benchmark -f spring-boot -t json-tls --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: spring-boot | Test: json-tls

Test Conn RPS CPU Mem Δ RPS Δ Mem
json-tls 4096 188,030 2659.2% 3.2GiB NEW NEW
Full log
[info] available CPUs: 128
[info] framework: spring-boot (spring-boot, Java)
[info] subscribed tests: baseline,limited-conn,pipelined,json,json-comp,json-tls,upload,static,async-db,api-4,api-16,baseline-h2,static-h2,echo-ws
[info] building image: httparena-spring-boot
#0 building with "default" instance using docker driver

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

#2 [internal] load metadata for docker.io/library/eclipse-temurin:25-jre
#2 ...

#3 [internal] load metadata for docker.io/library/eclipse-temurin:25
#3 DONE 0.7s

#2 [internal] load metadata for docker.io/library/eclipse-temurin:25-jre
#2 DONE 1.0s

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

#5 [build 1/8] FROM docker.io/library/eclipse-temurin:25@sha256:1bda4d9e668f44f399abed30636c34e0befb727408fba27b1e6aaefcf9df346b
#5 resolve docker.io/library/eclipse-temurin:25@sha256:1bda4d9e668f44f399abed30636c34e0befb727408fba27b1e6aaefcf9df346b 0.0s done
#5 DONE 0.0s

#6 [runtime 1/3] FROM docker.io/library/eclipse-temurin:25-jre@sha256:1089975c9ab22e822faf568c0e03997ee707165a125b7a55fbc799315b63d697
#6 resolve docker.io/library/eclipse-temurin:25-jre@sha256:1089975c9ab22e822faf568c0e03997ee707165a125b7a55fbc799315b63d697 0.0s done
#6 DONE 0.0s

#7 [internal] load build context
#7 transferring context: 6.64kB done
#7 DONE 0.0s

#8 [build 5/8] COPY .mvn/ .mvn/
#8 CACHED

#9 [build 3/8] COPY pom.xml .
#9 CACHED

#10 [build 8/8] RUN ./mvnw clean package -DskipTests --batch-mode --quiet
#10 CACHED

#11 [build 7/8] COPY src/ src/
#11 CACHED

#12 [build 2/8] WORKDIR /app
#12 CACHED

#13 [runtime 2/3] WORKDIR /app
#13 CACHED

#14 [build 4/8] COPY mvnw .
#14 CACHED

#15 [build 6/8] RUN ./mvnw dependency:go-offline --batch-mode --quiet
#15 CACHED

#16 [runtime 3/3] COPY --from=build /app/target/*.jar app.jar
#16 CACHED

#17 exporting to image
#17 exporting layers done
#17 exporting manifest sha256:b38450172e0e2a7bb694e72e3f0ea77114ba96c62453db6334713434fe745ac5 done
#17 exporting config sha256:4c2650a5b0a2f61635f7c604e27df2c892fdfe9afd8a7cec41af115d6b6de6a8 done
#17 exporting attestation manifest sha256:4f8a193073110b36319e02ac1dede7dca66e37be4484471222e9c40541849267 0.0s done
#17 exporting manifest list sha256:af0a12bc75f6106772de9259935f798eba6e699f665710dd942000d7cadff48a 0.0s done
#17 naming to docker.io/library/httparena-spring-boot:latest
#17 naming to docker.io/library/httparena-spring-boot:latest done
#17 unpacking to docker.io/library/httparena-spring-boot:latest done
#17 DONE 0.1s
[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)

==============================================
=== spring-boot / 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    19.71ms   21.77ms 578.60ms   97.74%
    Req/Sec     2.62k     1.49k   13.49k    75.25%
  723025 requests in 5.10s, 2.44GB read
Requests/sec: 141782.48
Transfer/sec:    490.88MB
[info] CPU 4100.0% | Mem 2.3GiB

[run 2/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    20.90ms    4.85ms 103.37ms   84.39%
    Req/Sec     2.91k   537.11     7.01k    84.50%
  936869 requests in 5.10s, 3.17GB read
Requests/sec: 183759.65
Transfer/sec:    636.24MB
[info] CPU 2473.8% | Mem 3.0GiB

[run 3/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    20.64ms    4.17ms  85.30ms   86.61%
    Req/Sec     2.97k   546.09    10.33k    87.82%
  958731 requests in 5.10s, 3.24GB read
Requests/sec: 188030.20
Transfer/sec:    651.02MB
[info] CPU 2659.2% | Mem 3.2GiB

=== Best: 188030 req/s (CPU: 2659.2%, Mem: 3.2GiB) ===
[info] saved results/json-tls/4096/spring-boot.json
httparena-bench-spring-boot
httparena-bench-spring-boot
[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
[info] restoring CPU governor → powersave

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat marked this pull request as ready for review April 27, 2026 19:15
@MDA2AV MDA2AV merged commit 674a08a into MDA2AV:main Apr 27, 2026
@Kaliumhexacyanoferrat Kaliumhexacyanoferrat deleted the spring-boot-json-lts branch April 27, 2026 21:57
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