HTTP Pipelining

228 views
Skip to first unread message

André Silva

unread,
Apr 26, 2012, 1:34:52 PM4/26/12
to Gatling User Group
Hi,

Does Gatling use HTTP pipelining? Or does, for example, having 100
users imply having 100 open sockets?
Also, when I'm looping an action does it maintain persistent
connections?

Regards.

Stéphane Landelle

unread,
Apr 27, 2012, 7:58:02 AM4/27/12
to gat...@googlegroups.com
Hi André,

No, Gatling doesn't use pipelining.
By default, it uses connections pooling:

So with this default, no, 100 users doesn't imply 100 opened sockets, and yes, connections are maintained.

Cheers,

Steph

2012/4/26 André Silva <andre...@gmail.com>

André Silva

unread,
Apr 27, 2012, 4:41:18 PM4/27/12
to Gatling User Group
How would I go about enabling support for http pipelining?
Is there a configuration parameter to enable it?

Cheers.

On Apr 27, 12:58 pm, Stéphane Landelle <slande...@excilys.com> wrote:
> Hi André,
>
> No, Gatling doesn't use pipelining.
> By default, it uses connections pooling:https://github.com/excilys/gatling/blob/master/gatling-bundle/src/mai...
>
> So with this default, no, 100 users doesn't imply 100 opened sockets, and
> yes, connections are maintained.
>
> Cheers,
>
> Steph
>
> 2012/4/26 André Silva <andre.b...@gmail.com>

Stéphane Landelle

unread,
Apr 29, 2012, 4:27:10 AM4/29/12
to gat...@googlegroups.com
Hi André,

There's no such configuration simply because Gatling is based on Async Http Client (https://github.com/sonatype/async-http-client) and that it doesn't currently support HTTP pipelining.

Could you please explain why you want HTTP pipelining? Isn't Gatling fast enough for your needs? What kind of scenario would you write with pipeling?

Cheers,

Stephane

2012/4/27 André Silva <andre...@gmail.com>

André Silva

unread,
May 7, 2012, 6:07:57 AM5/7/12
to Gatling User Group
Hello Stéphane,

The scenario I'm trying to simulate is different from a normal "web
app" where you
have tons of users generating lots of requests (with lots of
connections open).

Basically I'm trying to minimize the number of connections open on the
server side
(e.g. a server-to-server interaction). Still, these days some browsers
already support
HTTP pipelining.

Cheers,
André Silva

On Apr 29, 9:27 am, Stéphane Landelle <slande...@excilys.com> wrote:
> Hi André,
>
> There's no such configuration simply because Gatling is based on Async Http
> Client (https://github.com/sonatype/async-http-client) and that it doesn't
> currently support HTTP pipelining.
>
> Could you please explain why you want HTTP pipelining? Isn't Gatling fast
> enough for your needs? What kind of scenario would you write with pipeling?
>
> Cheers,
>
> Stephane
>
> 2012/4/27 André Silva <andre.b...@gmail.com>

Stéphane Landelle

unread,
May 7, 2012, 6:20:44 AM5/7/12
to gat...@googlegroups.com


2012/5/7 André Silva <andre...@gmail.com>

Hello Stéphane,

The scenario I'm trying to simulate is different from a normal "web
app" where you
have tons of users generating lots of requests (with lots of
connections open).

Basically I'm trying to minimize the number of connections open on the
server side
(e.g. a server-to-server interaction).

OK, I understand.
As I said, Gatling is based on AsyncHttpClient. There's another netty based client (https://github.com/brunodecarvalho/http-client) that claims to implement HTTP pipelining.
It might be a source of inspiration for supporting it in AHC.
 
Still, these days some browsers already support HTTP pipelining.
But this support is usually disabled by default as proxies usually don't support it. 

Laurent Valdès

unread,
Mar 21, 2015, 4:44:46 PM3/21/15
to gat...@googlegroups.com
Hi Stéphane,

spray client, which is written with Akka, supports http pipelining.

I'm also very interested in http pipelining because it lowers resource usage on network hardware (SYN, ACK, RST, etc).
In my hardware architecture there is no proxies.

May I try to send a Pull Request with spray client integration ? 

Best regards,

Stéphane LANDELLE

unread,
Mar 21, 2015, 5:27:36 PM3/21/15
to gat...@googlegroups.com
Hi Laurent,

Pipelining support would be interesting, thanks for offering to help.

Regarding new protocols support contributed by the community, our current strategy is to not immediately accept PR but to first let the add-on live in the community member repository in incubator mode (but we'll advertise it).

We want to check that:
  • the design and implementation is stable
  • the contributor is willing to maintain it on the long term
  • there's enough demand from the community
The JMS support is a very good example: it is mainly maintained by the community (kudos Piotr).

Then, regarding the implementation, I don't think we'll ever merge something based on Spray. First, Spray is basically dead. Then, Gatling has always been Netty based and the next move would rather be upgrade to AHC2 that will support Netty 4.x, or even target directly Netty, than moving to akka-http.

Have you noticed that Typesafe has developed some pipelining support for Netty: https://github.com/typesafehub/netty-http-pipelining. I guess it's used in Play.

Cheers,

Stéphane Landelle
Lead developer


--
You received this message because you are subscribed to the Google Groups "Gatling User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gatling+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages