go net/http transport 内存泄漏

2023-04-03 10:00:19 +08:00
 aladdinding
		transport: &http.Transport{
			DialContext: proxy.DailContext,
			Proxy: func(req *http.Request) (*url.URL, error) {
				if proxyURL, ok := req.Context().Value(proxy.KeyProxyURL).(*url.URL); ok {
					return proxyURL, nil
				}
				return nil, nil
			},
			TLSClientConfig: &tls.Config{
				InsecureSkipVerify: true,
			},
			IdleConnTimeout:       15 * time.Second,
			ResponseHeaderTimeout: 10 * time.Second,
			TLSHandshakeTimeout:   10 * time.Second,
			ExpectContinueTimeout: 10 * time.Second,
			MaxIdleConnsPerHost:   3,
		},}

附上 pprof 图,

http://img.aladdinding.cn/202304030947153.png

集中在 bufio NewReader/Writer 是什么原因呢?


	pconn.br = bufio.NewReaderSize(pconn, t.readBufferSize())
	pconn.bw = bufio.NewWriterSize(persistConnWriter{pconn}, t.writeBufferSize())

	go pconn.readLoop()
	go pconn.writeLoop()
	return pconn, nil
2487 次点击
所在节点    问与答
23 条回复
sadfQED2
2023-04-03 18:49:29 +08:00
@777777
@aladdinding

看了一下我们代码,ForceAttemptHTTP2 设置的 true ,keepalive 开启,我淦。
sadfQED2
2023-04-03 18:50:47 +08:00
@777777 #18 http/2 不退出会造成协程和内存泄露,这个问题在哪有讨论吗,能否给个来源呢?
bigNewsMaker
2023-04-03 21:33:33 +08:00
➕1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/929315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX