Uploaded image for project: 'Qt Installer Framework'
  1. Qt Installer Framework
  2. QTIFW-1130

Use HTTP keep-alive to reduce overhead of downloading metadata



    • Suggestion
    • Resolution: Invalid
    • Not Evaluated
    • None
    • 3.0.2
    • General


      As of 30 March 2018, downloading Qt metadata involves 2391 HTTP GET requests on Windows and 1205 GETs on Linux.

      Each GET uses a separate TCP connection. This results in a lot of unnecessary SYN and FIN handshakes.


      I asked Wireshark to capture traffic to/from (download.qt.io). The full capture is attached; here's a summary of the opening sequence:

      1. When I start downloading metadata, 6 SYN packets are sent consecutively (all within a ~1.5 ms interval). The ports are 60625 - 60630.
      2. 400 ms later, the SYN-ACK packets start arriving. Each port responds with an ACK then a HTTP GET.
      3. 400 ms later, the first response is received. A flurry of *ACK*s occur between port 60626 and the server.
      4. (Port 60625 starts receiving its response here, but let's ignore that for now)
      5. 20 ms later, the the first GET finishes and a FIN-ACK packet is sent from port 60626.
      6. 5 ms later, a SYN packet is sent from port 60631.
      7. 400 ms later, a SYN-ACK packet is received at port 60631.
      8. (Keep repeating...)

      For me in Australia, the metadata download took 341 s = 5.7 min. Of this, roughly (2391 / 6) * 400 ms = 2.7 min is spent waiting on SYN handshaking. Reusing TCP connections could halve the download time!


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              installerteam Installer Team
              jksh Sze Howe Koh
              4 Vote for this issue
              3 Start watching this issue



                Gerrit Reviews

                  There are no open Gerrit changes