For an HTTP 1.1 request. JRuby's packet sequence goes like this:
- The request is sent from the client
- The server sends a packet back with the 200 OK, headers, and ack of the request
- The client sends an ack of the headers
- The server sends the body of the request
On Linux with delayed ACK, there's around 0.04 seconds between (2) and (3), which drastically reduces throughput.