gpt4 book ai didi

golang grpc transport.newBufWriter 和 bufio.NewReaderSize 不释放内存

转载 作者:行者123 更新时间:2023-12-02 11:26:35 25 4
gpt4 key购买 nike

我在 golang 中有一个简单的 grpc 服务器,它对对象执行 CRUD 操作。但是,当我运行它时,即使在请求停止后内存也不会下降。堆显示的 pprof 具有以下结果:

> flat  flat%   sum%        cum   cum%
> 932.39MB 62.45% 62.45% 932.39MB 62.45% google.golang.org/grpc/internal/transport.newBufWriter
> 463.13MB 31.02% 93.46% 463.13MB 31.02% bufio.NewReaderSize
> 13.50MB 0.9% 94.37% 13.50MB 0.9% runtime.malg
> 13MB 0.87% 95.24% 1420.52MB 95.14% google.golang.org/grpc/internal/transport.newHTTP2Server
> 11MB 0.74% 95.98% 12.10MB 0.81% time.NewTimer
> 8.50MB 0.57% 96.54% 8.50MB 0.57% golang.org/x/net/http2/hpack.(*headerFieldTable).addEntry
> 5.50MB 0.37% 96.91% 17.60MB 1.18% google.golang.org/grpc/internal/transport.(*http2Server).keepalive
> 3.50MB 0.23% 97.15% 7.50MB 0.5% google.golang.org/grpc/internal/transport.newLoopyWriter
> 1.50MB 0.1% 97.25% 12.50MB 0.84% google.golang.org/grpc.(*Server).serveStreams
> 0 0% 97.25% 10MB 0.67% golang.org/x/net/http2.(*Framer).ReadFrame

谁能指导我如何解决这个内存问题?服务器使用默认选项运行,我什至启用了 debug.FreeOSMemory() 函数来释放内存。

最佳答案

您很可能需要关闭 ClientConn 或重新使用它。
我遇到了同样的问题,问题是为每个 RPC 调用创建新的 ClientConn,而没有稍后关闭这些连接。
很好的解释在这里pooling-grpc-connections
相关问题 GRPC Connection Management in Golang

关于golang grpc transport.newBufWriter 和 bufio.NewReaderSize 不释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60107401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com