<html><head></head><body><div>hackney may also fit your needs. it tries to handle much of the specs. and http2/wbsockets are coming, release is planned on 25/09 since it had to be postponed due to some others priorities.</div>
    <div><br></div>how slow it is, isrelative. most of the time your backend on the same host will accept less connections than you except anyway. Hence the need of pools. And most of the time the speed is more a matter of your application internals . hackney is used in prod since a long time on large applications.<div><br></div><div>There are some speedup coming in hackney when you disable some options. no figures yet. otherwise patches are also welcome.</div><div><br></div><div>If you have some questions feel free to contact me.</div><div><br></div><div>Benoit</div><div><div> <p class="gmail_quote" style="color:#000">On 31 August 2017 at 03:34:34, Frank Muller (<a href="mailto:frank.muller.erl@gmail.com">frank.muller.erl@gmail.com</a>) wrote:</p> <blockquote type="cite" class="gmail_quote"><span><div><div></div><div>


<title></title>


<div>
<div dir="auto">The above mentioned clients are also slow compared
to "buoy":</div>
<div dir="auto"><br></div>
<div dir="auto"><a href="https://github.com/lpgauth/buoy">https://github.com/lpgauth/buoy</a><br>
</div>
<div dir="auto"><br></div>
<div dir="auto">Watch the author's video at:</div>
<div dir="auto"><br></div>
<div dir="auto"><a href="http://www.erlang-factory.com/sfbay2017/louisphilippe-gauthier.html">
http://www.erlang-factory.com/sfbay2017/louisphilippe-gauthier.html</a></div>
<div dir="auto"><br></div>
<div dir="auto">/Frank</div>
<br>
<div class="gmail_quote">
<div>Le mer. 30 août 2017 à 23:47, Martin Karlsson
<<a href="mailto:martin@admitsolutions.co.nz">martin@admitsolutions.co.nz</a>>
wrote:<br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I
have done some benchmarking for our specific use case.<br>
<br>
* Main web server with high number of concurrent requests coming
in<br>
  (~1000 concurrent requests per second but benchmarked up to
10,000<br>
  requests)<br>
* Most requests requires a call out to an back-end HTTP server
(only<br>
  GET)<br>
* There are few back-end endpoints (3).<br>
<br>
It is not clear how many different kind of servers you are going to
call<br>
out to and this will likely affect your choice of library.<br>
<br>
For our use case  I benchmarked httpc, gun, hackney, dlhttpc,
ibrowse.<br>
<br>
All of them behaves well when the endpoint replies quickly.
However,<br>
once the latency of the response goes up we have problems with all
"traditional<br>
clients". The only one that worked for us in this use case was
dlhttpc<br>
(<a href="https://github.com/ferd/dlhttpc" rel="noreferrer" target="_blank">https://github.com/ferd/dlhttpc</a>) and this is likely
because of the<br>
dispcount "router".<br>
<br>
I know hackney has experimental dispcount pooling so that would
likely<br>
work as well.<br>
<br>
* httpc is known to have a few quirks. For our use case which only
do HTTP<br>
  get requests, no cookies, pipelines or other it works well
but there is<br>
  a gen_server bottleneck in there somewhere when calling only
few<br>
  endpoints (have not tried with many endpoints). The biggest
pro is that<br>
  it is built-in, but behaves a bit strange under load.<br>
<br>
* gun - was discarded quickly as I couldn't get anywhere near
the<br>
  performance I was after and I didn't have the time to
trouble-shoot<br>
  with so many other alternatives.<br>
<br>
* hackney and ibrowse - seemed like the most stable clients in term
of<br>
  response times. hackney is also used lots in the elixir
community so<br>
  it should have some good production usage. ibrowse has been
around<br>
  for a long time.<br>
<br>
* dlhttpc - works best for us. Not updated in a while so can't
say<br>
  anything for more advanced usage. Again, this is becuase of
dispcount<br>
  routing, not the actual http client in it self.<br>
<br>
<br>
Cheers<br>
Martin<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote>
</div>
</div>


_______________________________________________
<br>erlang-questions mailing list
<br><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<br><a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
<br></div></div></span></blockquote>

</div></div></body></html>