gRPC C#服务器内存泄漏

gRPC C#服务器内存泄漏,c#,.net,memory-leaks,grpc,C#,.net,Memory Leaks,Grpc,我运行的是一台.NET Core gRPC服务器,内存泄漏。目前我正在使用基于c的库的Grpc版本1.22.1 通常会触发以下错误: W1027 Grpc.Core.Server在处理RPC时发生异常。 `System.InvalidOperationException:由于对象的当前状态,操作无效。位于Grpc.Core.Internal.AsyncCallServer。SendStatusFromServerAsync(状态状态、元数据跟踪、Nullable1选项写入) 位于Grpc.Cor

我运行的是一台.NET Core gRPC服务器,内存泄漏。目前我正在使用基于c的库的Grpc版本1.22.1

通常会触发以下错误:

W1027 Grpc.Core.Server在处理RPC时发生异常。 `System.InvalidOperationException:由于对象的当前状态,操作无效。位于Grpc.Core.Internal.AsyncCallServer。SendStatusFromServerAsync(状态状态、元数据跟踪、Nullable1选项写入) 位于Grpc.Core.Internal.DuplexStreamingServerCallHandler2.HandleCall(ServerRpcNew-newRpc,CompletionQueueSafeHandle cq) 位于Grpc.Core.Server.handleCalAsync(ServerRpcNew-newRpc、CompletionQueueSafeHandle cq、操作继续)

E1027 140088109414144/var/local/git/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc:2823:ipv4:10.132.15.236:6845:Keepalive监视程序已启动。关闭运输

下面是内存泄漏演变的图片。当应用程序接近其最大内存限制时,内存泄漏开始非常快,然后变慢。但是,它确实会停止,并由于超过内存使用量而关闭

这些错误是否与内存泄漏有关

更新:
问题似乎与空闲TCP连接有关。默认情况下,在我们使用的gRPC版本中不会删除空闲TCP连接。通过将以下选项“grpc.max_connection_idle_ms”设置为几分钟,TCP连接的数量停止上升,从而内存泄漏显著减少

第一条错误消息可能是的实例,与内存泄漏无关。另一条消息只是表示通道有一段时间没有发送/接收任何消息,因此正在关闭(这并不意味着内存泄漏)。如果问题仍然存在,可以在上提交问题并提供更多详细信息(最好是重现问题的片段)。内存使用率图看起来可疑,但如果没有更多信息,就无法进行调试。