在 Android 请求中使用 gRPC 时,在服务器上分配了数百个流
Hundreds of streams are allocated on the server when using gRPC in Android requests
我使用 Google 的 gRPC 与服务器一起工作,但一段时间后我注意到流是在服务器上分配的,只有当我关闭我的应用程序时它们才会关闭。
GatewayGrpc.GatewayBlockingStub stub = getGatewayBlockingStub();
Gw.GetRequest request = new Gw.GetRequest();
request.authToken = authToken;
request.requestId = requestId;
Gw.GetResponse response = stub.get(request);
如何释放这个连接?
如果 "hundreds of streams" 你的意思是 "hundreds of connections," 那么你可能没有关闭 ManagedChannel
。 getGatewayBlockingStub()
可能在内部创建一个 ManagedChannel
。您需要致电 ManagedChannel.shutdown()
.
通常要重复使用频道。通道延迟初始化任何 TCP 连接,除非有新的 RPC,否则不会重新连接。
我使用 Google 的 gRPC 与服务器一起工作,但一段时间后我注意到流是在服务器上分配的,只有当我关闭我的应用程序时它们才会关闭。
GatewayGrpc.GatewayBlockingStub stub = getGatewayBlockingStub();
Gw.GetRequest request = new Gw.GetRequest();
request.authToken = authToken;
request.requestId = requestId;
Gw.GetResponse response = stub.get(request);
如何释放这个连接?
如果 "hundreds of streams" 你的意思是 "hundreds of connections," 那么你可能没有关闭 ManagedChannel
。 getGatewayBlockingStub()
可能在内部创建一个 ManagedChannel
。您需要致电 ManagedChannel.shutdown()
.
通常要重复使用频道。通道延迟初始化任何 TCP 连接,除非有新的 RPC,否则不会重新连接。