这是 python 中的 gRPC 服务器:
server = grpc.server(
thread_pool=futures.ThreadPoolExecutor(max_workers=32),
maximum_concurrent_rpcs=100,
)
在 Python 中,如果服务器正在处理maximum_concurrent_rpcs请求,则下一个请求将立即被拒绝。
如果max_workers小于maximum_concurrent_rpcs,则有max_workers正在处理请求的线程数,如果没有空闲线程,则下一个请求将进入队列,直到线程空闲并从队列中获取要处理的请求。队列的最大大小是 maximum_concurrent_rpcs。
我的问题是同步服务器C++ gRPC 中的等效选项是什么?
1. 线程池大小如何设置,线程池没有空闲线程后,如何设置队列大小以放入多余的请求?
2. 如何设置排队请求的超时时间?
有一个SetMaxThreads选项,但似乎max_workers和maximum_concurrent_rpcs都设置为此选项。
grpc::ResourceQuota rq;
rq.SetMaxThreads(100);
builder.SetResourceQuota(rq);
我看到了下面的选项,但它们没有以我期望的方式工作。
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::NUM_CQS, 3);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MIN_POLLERS, 1);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MAX_POLLERS, 5);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::CQ_TIMEOUT_MSEC, 10000);