Add Varnish as a benchmarked framework - #1110
Conversation
cd51cfa to
9e8bebc
Compare
|
/validate -f varnish |
|
server busy with a large run, Ill trigger validation and benchmark here when it is finished. |
|
/benchmark -f varnish |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
hum, this looks quite bad. I'm bumping the default number of threads |
|
/benchmark -f varnish |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
I can trigger a run that posts docker logs if you rebase this to main, if you need. Could be printing errors which slows down quite a lot. |
Benchmark ResultsFramework:
Full log |
that would be great! |
9e8bebc to
c62fddb
Compare
c62fddb to
0a5f40d
Compare
|
/benchmark -f varnish --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
servers run with a budget of 32 cores (64 SMT CPU threads) so typically the optimal worker/thread count is around 64 for these non async workloads |
Benchmark ResultsFramework: No results captured Full log |
|
Sorry, that one is my fault, I need to up the max thread before the min one. I've fixed it now. Thank you for the information on the machine. Varnish operates with a slightly different model than other server, with one thread per tasks, so we aren't going to map as cleanly to the CPU core counts, hence the rather large numbers you've seen. |
|
/benchmark -f varnish --save |
cfa465b to
59a7f93
Compare
|
/benchmark -f varnish --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
59a7f93 to
683d50f
Compare
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
|
683d50f to
a0a986b
Compare
|
/benchmark -f varnish --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
I ran directly on the server to see logs with min/max thread combinations of 100/500 and 1000/5000
on both cases |
|
cheers, do we have logs on the client side? Are they timing out, getting refused connections? |
|
`gcannon v0.5.3 Thread Stats Avg p50 p90 p99 p99.9 1021464 requests in 5.00s, 1018844 responses load generator looks quite healthy all 2xx , cpu usage too, expected from 64 cpu threads available I'll try with a different load generator just to make sure it isn't a gcannon issue |
a0a986b to
6fe84c6
Compare
Varnish Cache accelerator with native TLS/H2 termination (varnishd -A), vmod-fileserver serving /static/* from Varnish's own object cache, and a custom vmod (vmod_httparena, built with varnish-rs) computing the /baseline11 and /baseline2 sum in-process. No separate origin process. Subscribes to baseline, pipelined, limited-conn, static, baseline-h2, and static-h2 (HTTP/3 is out of scope: no QUIC support in OSS Varnish). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
well, that's fun, |
|
thanks, just so we are talking about the same thing, I was looking at #1110 (comment): |
|
/benchmark -f varnish --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
Nice, running now. When results are posted you can also see logs at the commited files |
That is on the h2 load generator actually, h2load. I was testing on h1 locally only |
|
you can see the load gen output here https://github.com/MDA2AV/HttpArena/actions/runs/31744329441 |
Benchmark ResultsFramework:
Full log |
|
thanks, I think the thread default configuration was pretty good, but I'll keep the changes as they are since they won't hurt. Is there anything I should check? |
|
I see there are some errors in h2 tests, if you want to run locally to try to replicate I can point you to the scripts used but if you run claude I am sure he will find them. Ill wait a bit (1-2 days) to merge because I am doing a few changes in the infrastructure category which is currently not showing so you wouldn't see results on the site. Thanks for the contribution |
|
Ah! I think found the issue: the framework is probably just triggering the Rapid Reset defense mechanism. I'll try a run without it. |
|
/benchmark -f varnish --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
well, that's fun: no more errors, but it destroys the numbers |
3cde798 to
4bf4f5f
Compare
Summary
frameworks/varnish/as aninfrastructureentry: Varnish Cache with native TLS/H2 termination (varnishd -A),vmod-fileserverserving/static/*from Varnish's own object cache, and a custom vmod (vmod_httparena, built with varnish-rs) computing/baseline11//baseline2in-process — no separate origin/backend process.baseline,pipelined,limited-conn,static,baseline-h2,static-h2(matchesnginx's test list minus HTTP/3 — no QUIC support in OSS Varnish).Test plan
docker buildsucceedsdocker run+curlmatrix:/pipeline→ok; GET/POST/chunked-POST/baseline11→ correct sums; POST anti-cheat (two different bodies, same URL) → two different correct sums;/static/*→ correctContent-Typeper extension + exact byte size + 404 for missing files;/baseline2and/staticover HTTP/2+TLS →HTTP/2 200/validate -f varnish(requesting via PR bot)/benchmark -f varnish --save(requesting via PR bot)🤖 Generated with Claude Code