Hi Willy, >> B. Run 8 wgets in parallel. Each opens a new connection to get a 128 byte >> file. >> Again, 8 separate connections are opened to the backend server. > > But are they *really* processed in parallel ? If the file is only 128 bytes, > I can easily imagine that the connections are opened and closed immediately. > Please keep in mind that wget doesn't work like a browser *at all*. A browser > keeps connections alive. Wget fetches one object and closes. That's a huge > difference because the browser connection remains reusable while wget's not.
Yes, they were not really in parallel. I just tested with 128K byte file (run 4 wgets in parallel each retrieving 128K). Here, I see 4 connections being opened, and lots of data packets in the middle, finally followed by 4 connections being closed. I can test with "ab -k" option to simulate a browser, I guess, will try that. >> D. Run 5 "wget -i <file-containing 5 files>" in parallel. 5 >> connections are opened by >> the 5 wgets, and 5 connections are opened by haproxy to the >> single server, finally >> all are closed by RST's. > > Is wget advertising HTTP/1.1 in the request ? If not that could Yes, tcpdump shows HTTP/1.1 in the GET request. > explain why they're not merged, we only merge connections from > HTTP/1.1 compliant clients. Also we keep private any connection > which sees a 401 or 407 status code so that authentication doesn't > mix up with other clients and we remain compatible with broken > auth schemes like NTLM which violates HTTP. There are other criteria > to mark a connection private : > - proxy protocol used to the server > - SNI sent to the server > - source IP binding to client's IP address > - source IP binding to anything dynamic (eg: header) > - 401/407 received on a server connection. I am not doing any of these specifically. Its a very simple setup where the client@ip1 connects to haproxy@ip2 and requests 128 byte file, which is handled by server@ip3. >> I also modified step#1 above, to do a telnet, followed by a GET in >> telnet to actually >> open a server connection, and then run the other tests. I still don't >> see re-using connection >> having effect. > > How did you make your test, what exact request did you type ? I was doing this in telnet: GET /128 HTTP/1.1 Host: www.example.com User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) Thanks for your response & help, Regards, - Krishna Kumar