gRPC server Threadpool Exhausted

1k Views Asked by At

i have gRPC sync server with one service and 1 RPC.

I am not setting ResourceQuota on serverbuilder. If n clients wants to connect, there will be n request handler threads created by gRPC. I want to keep some limit on these threads. lets say 10. And if it costs some latency in serving client, it is okay.

So I tried these settings:

  grpc::ServerBuilder builder;
  grpc::ResourceQuota rq;
  rq.SetMaxThreads(10);
  builder.SetResourceQuota(rq);
  builder.SetSyncServerOption(
      grpc::ServerBuilder::SyncServerOption::MIN_POLLERS, 1);
  builder.SetSyncServerOption(
      grpc::ServerBuilder::SyncServerOption::MAX_POLLERS, 1);
  builder.SetSyncServerOption(grpc::ServerBuilder::SyncServerOption::NUM_CQS,
                              1);
                          

From another process, I am firing up 800 clients in parallel. So I expect there will be 1 completion queue for each of them and 10 threads sharing it. However, on client side there is an error:

"Server Threadpool Exhausted"

and none of the client succeeds. how to share threads between different clients.

0

There are 0 best solutions below