美文网首页
golang http client keep-alive最大连

golang http client keep-alive最大连

作者: 李二狗2000 | 来源:发表于2018-03-14 16:48 被阅读0次
    • 测试代码(默认MaxIdleConns=100, MaxIdleConnsPerHost=2)

     package main
    
    import (
    
        "io"
    
        "io/ioutil"
    
        "net/http"
    
        "time"
    
    )
    
    func worker(client *http.Client) {
    
        resp, _ := client.Get("[http://www.qq.com/"](http://192.168.31.1/%22);)
    
        io.Copy(ioutil.Discard, resp.Body)
    
        defer resp.Body.Close()
    
    }
    
    func worker2(client *http.Client) {
    
        resp, _ := client.Get("[http://httpbin.org/get"](http://httpbin.org/get%22);)
    
        io.Copy(ioutil.Discard, resp.Body)  //必须读取Body并且关闭,否者不会被复用
    
        defer resp.Body.Close() 
    
    }
    
    func main() {
    
        tr := &http.Transport{
    
            MaxIdleConns: 100,
    
            MaxIdleConnsPerHost: 2,
    
        }
    
        client := &http.Client{
    
            Transport: tr,
    
        }
    
        worker(client)
    
        time.Sleep(time.Second * 1)
    
        worker(client)
    
        time.Sleep(time.Second * 1)
    
        worker2(client)
    
        time.Sleep(time.Second * 1)
    
        worker(client)
    
        time.Sleep(time.Second * 1)
    
    }
    
    • 设置MaxIdleConns=MaxIdleConnsPerHost=1

    1. Client第一次请求,源端口是55564


      image.png
    2. Client第二次请求,源端口是55564


      image.png
    3. Client第三次请求,源端口是55556


      image.png
    4. Client第四次请求,源端口是55568


      image.png

    Client前两个请求对同一个host发起,复用了55564接口的链接,第三次请求对另外一个HOST发起,由于MaxIdleConns=1,会关闭前一个链接然后发起一个新的链接,第四次同样也会关闭第三次的链接,重新发起。说明MaxIdleConns限制了最大keep-alive的连接数,超出的连接会被关闭掉。

    • 设置MaxIdleConns=2 MaxIdleConnsPerHost=1

    1. Client第一次请求,源端口是55680


      image.png
    2. Client第二次请求,源端口是55680


      image.png
    3. Client第三次请求,源端口是55681


      image.png
    4. Client 第四次请求,源端口是55680


      image.png

    Client对不同的两个Host发起的请求,都复用了连接

    相关文章

      网友评论

          本文标题:golang http client keep-alive最大连

          本文链接:https://www.haomeiwen.com/subject/lnnfqftx.html