jester icon indicating copy to clipboard operation
jester copied to clipboard

Jester with HttpBeast is slow if used with ThreadPool

Open al6x opened this issue 3 years ago • 4 comments

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

al6x avatar Mar 14 '21 06:03 al6x

Seems that project is pretty much dead.

unkn0wn-root avatar Mar 25 '21 20:03 unkn0wn-root

What project?

dom96 avatar Mar 27 '21 13:03 dom96

Any updates on this? @dom96 have you been able to recreate it?

avahe-kellenberger avatar Dec 12 '21 06:12 avahe-kellenberger

Haven't had a chance to yet, can you reproduce it? :)

dom96 avatar Dec 12 '21 21:12 dom96