[WIP] Update Ktor with 3.6.0 - #1204
Conversation
|
👋 Heads up! This PR modifies the following frameworks:
|
|
/benchmark -f ktor |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
/benchmark -f ktor |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
The h3 bottleneck looks better now except for static files going down to 37 rps lol. I'll investigate this one next. |
68cb183 to
46f6e97
Compare
|
/benchmark -f ktor |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
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 🤞 |
|
/benchmark -f ktor |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
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 |
|
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... |
# Conflicts: # frameworks/ktor-ghost/meta.json
|
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 🤞 |
|
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. |
Benchmark ResultsFramework:
Full log |
|
/benchmark -f ktor -t echo-ws --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
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? |
|
would the docker logs help here? |
|
if you add the test "echo-ws-limited" this is a upgrade spam test, we can see at low connections, high upgrade count |
|
/benchmark -f ktor -t echo-ws |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
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. |
|
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. |
|
/benchmark -f ktor |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
Teamviewer 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 |
for that conn level you need to use benchmark.sh, pass LOADGEN_DOCKER=true so it uses the dockerized load gen. |
|
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 |
|
Here? https://web.teamviewer.com/remote-support |
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 |
|
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 |
|
/benchmark -f ktor |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
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