[erlang-questions] performance issue with cowboy
Sat Nov 8 23:44:26 CET 2014
Did you do any profiling?
Reading the patch I noticed that you have replaced single
[Mochiweb's Req:stream_body + file:write] with iterative [cowboy_req:body +
file:write]. So your process now writes to file (possibly blocking on it)
every MTU (typically 1.5K) bytes instead of single write — about 70K
syscalls per second on gigabit network.
I'd suggest adding a large buffer (e.g. 1 MB) to not access the file too
On Sun, Nov 9, 2014 at 12:41 AM, Shayan Pooya <> wrote:
> I have ported Disco to use cowboy instead of mochiweb. Mochiweb has been
> quite stable and we did not have any issues with it recently. However,
> cowboy uses the sendfile syscall which avoids a lot of overhead when
> serving static files and I thought that could lower the memory footprint of
> Disco when serving large files and free up some cycles. Disco+cowboy is now
> fully functional and all of the integration tests pass (minus some minor
> missing features).
> I wanted to get a sense of the performance before making the switch and
> used a couple of different Disco jobs (which pressure the web-servers) to
> do a comparison and the Disco version with cowboy consistently takes 10 to
> 20 percent longer to finish. I haven't done much for optimizing the usage
> of cowboy yet, but the micro-benchmarks that I find on the web are contrary
> to what I am seeing here and I wanted to know if anyone can offer some
> guidance for getting better results with cowboy.
> I am using cowboy 1.0.1 and the Cowboy patch for Disco is available at
> https://github.com/pooya/disco/commit/5499d696438 just in case.
> erlang-questions mailing list
Danil Zagoskin |
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions