jester
jester copied to clipboard
Jester with HttpBeast is slow if used with ThreadPool
The code below would work 10 times faster if compiled with AsyncHttpServer
instead of HttpBeast
.
I guess it's because it uses spawn
and competes with HttpBeast
for same ThreadPool
.
Not sure if it's a problem or expected behaviour, feel free to close.
import os, threadpool, jester
proc process(data: string): string =
sleep 100
"processed " & data
routes:
get "/":
let cresult = spawn process("something")
while true:
await sleep_async 1
if cresult.is_ready: break
resp ^cresult
Results with HttpBeast nim c -r --threads:on play.nim
, 2 req/sec
wrk -t2 -c2 -d10s http://localhost:5000
Running 10s test @ http://localhost:5000
2 threads and 2 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 991.70ms 25.97ms 1.00s 90.00%
Req/Sec 0.30 0.47 1.00 70.00%
20 requests in 10.06s, 2.99KB read
Requests/sec: 1.99
Transfer/sec: 304.09B
Results with AsyncHttpServer nim c -r --threads:on play.nim
, 20 req/sec
wrk -t2 -c2 -d10s http://localhost:5000
Running 10s test @ http://localhost:5000
2 threads and 2 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 104.47ms 1.67ms 108.73ms 61.98%
Req/Sec 9.06 0.83 10.00 81.77%
192 requests in 10.09s, 18.19KB read
Requests/sec: 19.04
Transfer/sec: 1.80KB
Seems that project is pretty much dead.
What project?
Any updates on this? @dom96 have you been able to recreate it?
Haven't had a chance to yet, can you reproduce it? :)