Ask Your Question

Revision history [back]

TCP window reduces due to slow reads but not increases later

A program is downloading a large file via HTTPS (50M). It's fast until at some time (~30M) it slows down significantly, never resuming.

From the capture file I see that the receive window gets full, then it reduces to 384 or so. It never resumes. The receive queue is clear as I can see with netstat -npt. This doesn't happen with wget the same URL (no window full; wget downloads smoothly to the end).

I don't understand why the receive window doesn't increase after the data has been read?

Here is the capture file: https://mega.nz/#!el1B3SRR!gERqKWq30xnhTrpIxHwko-MxcUHEehWUyI-3nL9syOk

Here is the program (in Go):

package main

import (
    "io/ioutil"
    "net/http"
)

func main() {
    resp, _ := http.Get("A URL here")
    ioutil.ReadAll(resp.Body)
}

This is a Linux box kernel version 4.15.0-1023-aws.