我使用的是gRPC v1.55.0,我已经使用完成队列运行了hello world异步服务器示例,并且运行得很好。但问题是,只创建服务器而不发出任何请求,在后台创建了19个线程。我尝试使用grpc::ResourceQuota::SetMaxThreads和grpc::ServerBuilder::SetSyncServerOption,但没有任何变化。¿有没有办法减少这个数量的线程在后台?
z31licg01#
你说得对,目前还不能很好地调整。gRPC核心/C++/Python正在经历低级I/O和异步执行实现的过渡。您可能会看到16个“event_engine”线程、2个执行器和一个计时器线程。在不久的将来,我们希望有~8个event_engine线程,在稍远的将来,没有executor线程。然而,这些是将继续改变的实施细节。就其价值而言,gRPC主要针对性能进行了调优,默认线程数可能会更改以更好地服务于该目标。现在有了一个公共的EventEngine API来定制低级异步行为,用户可以提供更好地满足他们需求的解决方案(例如,不同的性能与资源利用率的权衡)。
1条答案
按热度按时间z31licg01#
你说得对,目前还不能很好地调整。gRPC核心/C++/Python正在经历低级I/O和异步执行实现的过渡。您可能会看到16个“event_engine”线程、2个执行器和一个计时器线程。在不久的将来,我们希望有~8个event_engine线程,在稍远的将来,没有executor线程。然而,这些是将继续改变的实施细节。
就其价值而言,gRPC主要针对性能进行了调优,默认线程数可能会更改以更好地服务于该目标。现在有了一个公共的EventEngine API来定制低级异步行为,用户可以提供更好地满足他们需求的解决方案(例如,不同的性能与资源利用率的权衡)。