golang net/http keep alive失效

wangxiangyu · 2024-03-22 17:40:06 · 930 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2024-03-22 17:40:06 的主题,其中的信息可能已经有所发展或是发生改变。

请教大家一个问题,两个单测

这个keep alive是生效的

func BenchmarkNetHTTPClientBase2(b *testing.B) {
    client := http.Client{Transport: http.DefaultTransport}

    for i := 0; i < b.N; i++ {
        pingReq, _ := http.NewRequestWithContext(context.Background(), "GET", "http://127.0.0.1:7777/ping", nil)
        pingRes, err := client.Do(pingReq)
        if err != nil {
            b.Error(err)
        } else {
            _, err = ioutil.ReadAll(pingRes.Body)
            if err != nil {
                b.Error(err)
            }
            pingRes.Body.Close()
        }
    }
}

但是下面这个keep alive就不生效了

func BenchmarkNetHTTPClientBase1(b *testing.B) {
    client := http.Client{Transport: http.DefaultTransport}

    b.RunParallel(func(pb *testing.PB) {
        for pb.Next() {
            pingReq, _ := http.NewRequestWithContext(context.Background(), "GET", "http://127.0.0.1:7777/ping", nil)
            pingRes, err := client.Do(pingReq)
            if err != nil {
                b.Error(err)
            } else {
                _, err = ioutil.ReadAll(pingRes.Body)
                if err != nil {
                    b.Error(err)
                }
                pingRes.Body.Close()
            }
        }
    })
}

请问是什么原因呢?谢谢


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

930 次点击  
加入收藏 微博
1 回复  |  直到 2024-07-17 14:40:58
GO_go_GO1
GO_go_GO1 · #1 · 9月之前

服务器配置:确保服务器端配置正确,支持并允许Keep-Alive连接。 请求头:确保请求头中没有设置 Connection: close,这会关闭连接而不进行重用。 客户端配置:确保客户端配置允许连接重用。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传