From: "normalperson (Eric Wong)" Date: 2013-07-25T03:40:36+09:00 Subject: [ruby-core:56158] [CommonRuby - Feature #8681][Open] Net::HTTP should set TCP_NODELAY for requests with body Issue #8681 has been reported by normalperson (Eric Wong). ---------------------------------------- Feature #8681: Net::HTTP should set TCP_NODELAY for requests with body https://bugs.ruby-lang.org/issues/8681 Author: normalperson (Eric Wong) Status: Open Priority: Low Assignee: Category: Target version: Setting TCP_NODELAY to disable Nagle's algorithm speeds up successive writes which we use when sending HTTP PUT/POST requests with body. From https://en.wikipedia.org/wiki/Nagle%27s_algorithm The user-level solution is to avoid write-write-read sequences on sockets. write-read-write-read is fine. write-write-write is fine. But write-write-read is a killer. So, if you can, buffer up your little writes to TCP and send them all at once. Using the standard UNIX I/O package and flushing write before each read usually works. We currently hit the killer write-write-read case when sending requests with body using Net::HTTP net-http-persistent does this by default (for all connections), even. I usually use net-http-persistent, but sometimes it's easier to use Net::HTTP on a new (bare) system and I've been bitten by this :x -- http://bugs.ruby-lang.org/