Skip to content

Remove HTTP1.1 pipelined bench test #1058

Description

@joanhey

It is largely obsolete and disabled by default in modern web browsers (such as Chrome, Firefox, and Edge) due to head-of-line blocking and widespread issues with misbehaving proxies and servers.

Pipelining suffers from head-of-line blocking, where a slow response blocks subsequent requests, negating performance benefits.

Browser Support

Most major browsers have disabled pipelining since around 2015–2018 (Chrome, Firefox, Edge, ...)

Library Support

Popular tools like curl (since v7.65.0) and libcurl have completely removed pipelining code due to its limited benefits and high complexity.

Proxy Servers

All major modern proxy server don't support it. And we used them everywhere in internet to pass our data.
Pipelining problems frequently occur in intermediate nodes; if any proxy in the chain mishandles pipelined requests, the entire pipeline fails.

Head-of-Line (HOL) Blocking: Proxies must forward responses in the exact order requests were received. If a proxy must fetch one request from an origin server while others are cached, it must wait for that slow response before sending any of the cached responses, significantly increasing latency.

Cloudflare, Azure, Google Cloud, ...

Cloudflare

The platform supports HTTP/1.1 for legacy client compatibility but does not support HTTP pipelining. Connections from Cloudflare’s Edge to origin servers default to HTTP/1.1 without pipelining, and the platform encourages the use of HTTP/2 or HTTP/3 for multiplexed performance.

Azure

Microsoft explicitly deprecated and removed support for HTTP/1.1 pipelining due to security vulnerabilities and operational issues, meaning requests must be processed sequentially even if the client attempts to pipeline them.

Microsoft Azure services, including Application Gateway and App Service, do not support HTTP pipelining. While Azure supports HTTP/1.1 and HTTP/2, HTTP/2 is the recommended protocol for efficient request handling, as it natively supports multiplexing without the risks associated with pipelining.

Google Cloud

Google Cloud Run, Load Balancers, and other services do not support HTTP pipelining. Google Cloud explicitly advises against pipelining; instead, it utilizes HTTP/2 or HTTP/3 to allow multiple requests over a single connection safely and efficiently.

Conclusion

It was OK to benchmark it 15 years ago, but not now.

We can maintain it but only as reference (like the Fortunes test, than is more useful).

But as a reference for what? We cannot use it practically anywhere.

Metadata

Metadata

Assignees

No one assigned

    Labels

    testsAbout test design, issues with tests etc.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions