Project

General

Profile

Actions

Feature #8681

open

Net::HTTP should set TCP_NODELAY for requests with body

Added by normalperson (Eric Wong) over 11 years ago. Updated almost 3 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:56158]

Description

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

Actions

Also available in: Atom PDF

Like0
Like0