Forum: Ruby-core [CommonRuby - Feature #8681][Open] Net::HTTP should set TCP_NODELAY for requests with body

18813f71506ebad74179bf8c5a136696?d=identicon&s=25 normalperson (Eric Wong) (Guest)
on 2013-07-24 20:41
(Received via mailing list)
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
This topic is locked and can not be replied to.