HTTP.jl doesn't seem to be good at handling over 1k concurrent requests, in comparison to an alternative in Python?

Hi @aviatesk,

Did you ever do more detailed profiling and figure out what the slowness was in running your HTTP.jl server?

Sorry for the slow response here, but I’ve been deep in some refactorings of other packages and am circling back around to open HTTP.jl issues and how we can improve things.

I ran some simple “hello world” benchmarks and things seem to be on par with a default node server at least:

ab -n 10000 -c 100 http://0.0.0.0:8086/
node

Percentage of the requests served within a certain time (ms)
  50%     31
  66%     35
  75%     37
  80%     39
  90%     43
  95%     45
  98%     48
  99%    182
 100%    295 (longest request)

julia via HTTP.jl

Percentage of the requests served within a certain time (ms)
  50%     39
  66%     48
  75%     50
  80%     52
  90%     55
  95%     58
  98%     87
  99%    159
 100%    179 (longest request)

julia via HTTP.jl using a HTTP.Router handler

Percentage of the requests served within a certain time (ms)
  50%     44
  66%     49
  75%     54
  80%     55
  90%     57
  95%     58
  98%     59
  99%     60
 100%     62 (longest request)

ab -n 10000 -c 1000 http://0.0.0.0:8086
node

Percentage of the requests served within a certain time (ms)
  50%     81
  66%    158
  75%    323
  80%    330
  90%   3722
  95%   8698
  98%  13259
  99%  13420
 100%  25887 (longest request)

julia with simple HTTP.Router

Percentage of the requests served within a certain time (ms)
  50%     64
  66%     75
  75%     79
  80%     85
  90%   1574
  95%   7976
  98%  14630
  99%  21373
 100%  21516 (longest request)

If you can share, even if just privately an example of the slowness you’re seeing, I’d love to dive in and figure out what’s going on. Happy to jump on a zoom call if that would be helpful.

@yoh-meyers, (and others), I’d love to invite collaboration on HTTP.jl. Julia has a great history of collaborating on core packages to make them best in class. If you have ideas on how to improve things, I’m more than willing to bring on additional maintainers with HTTP.jl. I have a list myself of 5-10 projects I want to work on, and I’m trying to find ways to encourage others to pitch in on developing/helping out.

Would there be people interested in doing something like a weekly (or biweekly) call to discuss progress on web development topics in Julia? I’m happy to host and help put together an agenda if that would help people get a better feel for where work needs to happen.

16 Likes