HTTP Pipelining

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.

Hi André,

No, Gatling doesn't use pipelining.
By default, it uses connections pooling:
https://github.com/excilys/gatling/blob/master/gatling-bundle/src/main/assembly/assembly-structure/conf/gatling.conf#L27

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

Cheers,

Steph

How would I go about enabling support for http pipelining?
Is there a configuration parameter to enable it?

Cheers.

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

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

2012/5/7 André Silva <andre.beat@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.

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,

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,