> The request body doesn't seem to be there, presumably because Heroku > isn't sending it. > > Doe heroku fully buffer the request body before sending it to unicorn? > nginx fully buffers, and this is why I can only recommend nginx for slow > clients. > > The proxy -> unicorn transfer speed should _never_ be dependent by the > client -> proxy transfer speed. > > 1) client ------------------ (slow) --------------> proxy > 2) proxy (nginx) --- (as fast as the connection goes) ---> unicorn > > With nginx, 1) and 2) are decoupled and serialized. This adds latency, > but is the only way for multiprocess servers like unicorn to efficiently > handle slow clients.
I've some new information. Heroku buffers the headers of a HTTP request but it doesn't buffer the body of POST requests. Because of that I switched to Rainbows! and the responsiveness of the application increased dramatically. Right now I'm using this configuration: worker_processes 4 timeout 15 preload_app true Rainbows! do use :EventMachine worker_connections 50 client_max_body_size 5*1024*1024 # 5 megabytes client_header_buffer_size 2 * 1024 # 2 kilobytes timeout 10 end With high load the performance drops, is EventMachine the right choice for this situation (Rails application with slow POST requests and with up to 50% POST requests)? Will increasing the worker_connections help? I'm planning to make a blog post about this and tell Heroku not to advise Unicorn for Rails applications but to use Rainbows and suggest a correct/optimised configuration. Thanks! Tom _______________________________________________ Unicorn mailing list - [email protected] http://rubyforge.org/mailman/listinfo/mongrel-unicorn Do not quote signatures (like this one) or top post when replying
