I have following configuration in my linode slice
NB <----->web1+web2+web3 Here's the configuration screenshot from linode:
We need NB in http mode since we need few things that plain tcp mode does not give.
Now my problem is : when i run something like webpagetest.org for benchmarking purpose, i always get message that my domain is running static assets without keepalives. In TCP mode, keepalive is fine.
I understand haproxy is working as nodebalancer in linode. I just wanted to know "is this a known limitation of NB/haproxy or am i doing anything wrong ????"
If I understand your question properly you're saying that NodeBalancer is based on HAProxy. I can't find any documentation stating that this is the case.
Versions of HAProxy before 1.4 did not support HTTP Keep-Alive. Version 1.4 was released in February 2010. If NodeBalancer is actually built on HAProxy and they used version 1.3, then it will not support HTTP Keep-Alive between the client and NodeBalancer.
Client Keep-Alive is useful because it saves saves one round-trip-time per HTTP request. Combining Keep-Alive and pipelining can deliver many requests in a two round-trip-times (one for TCP setup, one for a bunch of HTTP requests), rather than two per resource without them. This is a simplified view of things, but is a decent rule of thumb.
Something that very few proxies support are keep-alives between the proxy and the backend servers. This is invisible from the client side, but results in a few extra packets being transmitted. It does not matter as much as client-side keep-alive, as the round-trip time between proxy and backend server is usually very low.
As per Linode Node Balancer documentation