> Then you can see the client has used http piping (pretty dumb
> considering the browser should know this connection is occupied)
> to send requests for /21.png /22.png /23.png ( the hanging resources)
> [...]

Exactly. The fact the client is requesting static resource on a pipelined
HTTP connection with a delayed chunked response is a very bad idea.



> I am by no means an expert analysing tcpdumps or how http pipelining
> is supposed to work but it looks to me that without haproxy in the
> middle node has managed to identify there are requests stuck in a http
> pipeline and reset the connection to allow the browser to continue.

Yes, I agree with that analysis. But all those things are just bandaid
and only required because HTTP is so incredible misused here.



> Is there anyway to achieve the same with haproxy?

Not directly. However, if you are able to disable keep-alive for /events,
then the client will have to open new connections for the DOM elements
and this should fix the issue, theoretically.


Try (please ignore the tunnel test from my previous mail):

frontend external
    bind :80
    acl DYN path_beg /events
    use_backend backend_httpclose if DYN
    default_backend test

backend test
    server test localhost:3000

backend backend_httpclose
    option httpclose
    server test localhost:3000



Regards,

Lukas

                                          

Reply via email to