- From: Darin Fisher <darin@chromium.org>
- Date: Thu, 11 Aug 2011 22:43:36 -0700
- To: Willy Tarreau <w@1wt.eu>
- Cc: Brian Pane <brianp@brianp.net>, ietf-http-wg@w3.org
- Message-ID: <CAP0-QpukAzexjJaMOHoTaAGRPYV_7-91Fr9P_ukkqNQ1gsDC_A@mail.gmail.com>
On Thu, Aug 11, 2011 at 10:31 PM, Willy Tarreau <w@1wt.eu> wrote: > Hi Brian, > > On Thu, Aug 11, 2011 at 03:12:31PM -0700, Brian Pane wrote: > > I've been thinking some more about request pipelining recently, > > triggered by several observations: > > > > - A significant number of real-world websites could be made faster via > > widespread adoption of request pipelining (based on my study of > > ~15,000 sites in the httparchive.org corpus). > > - A nontrivial fraction of mobile browsers are using pipelining > > already, albeit not as aggressively as they could (based on Blaze's > > study: http://www.blaze.io/mobile/http-pipelining-big-in-mobile/ ) > > - Client implementations that currently pipeline their requests are > > using heuristics of varying complexity to try to decide when > > pipelining is safe. The list of conditions documented here is at the > > complex end of the spectrum, and it's perhaps still incomplete: > > https://bugzilla.mozilla.org/show_bug.cgi?id=599164 > > > > The key question, I think, is whether heuristics implemented on the > > client side will end up being sufficient to detect safe opportunities > > for pipelining. If not, a server-driven hinting mechanism of the sort > > proposed in Mark's "making pipelining usable" draft ( > > http://tools.ietf.org/html/draft-nottingham-http-pipeline-01 ) seems > > necessary. > > > > Anybody have additional experimental data on pipelining (including the > > effectiveness of heuristics for turning pipelining on or off) that > > they can share? > > We've been conducting some tests for a customer working with mobile > terminals. I was very frustrated to see that pipelining did not bring > any gain there due to the first non-pipelined request to each host. > What happens is that there are many objects on a page, spread over > many hosts. The terminal opens many parallel connections to these > hosts, and as a result, there are 4-5 objects max to fetch over each > connection. All connection have a first object fetched alone, and only > once a response is received, a batch of 4 requests is sent. It is this > pause between the first and the next request over a connection which > voids the gain. It was always faster to open more parallel connection, > despite the extra bandwidth, than to use pipeline, precisely due to > this point. > > This is why I think we need to find a solution so that pipelining could > be more aggressive on riskless requests, and possibly use the server > side's hinting to safely fall back to non-pipelining ASAP if needed. > I'm well aware that the biggest issue seems to be with broken servers > getting stuck between requests. I don't know if there are many of those > or not, but maybe at one point it will become those site's problem and > not the browsers'. > Often it is a bad intermediary (transparent proxy). The origin server may be just as helpless as the client :-( -Darin > > Also, another important thing to note is that (especially in mobile > environments), the highest latency is between the terminal and the > ISP's infrastructure, where interception proxies are quite common. > It would be a tremendous help to be able to use pipelining by default > without hinting, because these interception proxies generally support > pipelining very well and are the only ones for whom it's important. > That way we could have a terminal always pipeline requests and the > interception proxy do whatever it likes on the last 10-millisecond > segment. > > Regards, > Willy > > >
Received on Friday, 12 August 2011 05:44:14 UTC