我试图了解 gRPC 队列的管理方式以及 gRPC 队列大小是否有任何大小限制。
根据此,帖子请求已排队:
如果您的服务器已经同时处理了maximum_concurrent_rpcs个请求,并且又收到另一个请求,则该请求将立即被拒绝。
如果ThreadPoolExecutor的max_workers小于maximum_concurrent_rpcs,那么在所有线程都忙于处理请求后,下一个请求将排队,并在线程完成处理时处理。
根据此 GitHub 帖子,队列由 gRPC 服务器管理:
因此,maximum_concurrent_rpcs 为您提供了一种方法来设置服务器队列中等待线程服务的 RPC 数量的上限。
但微软的这篇文章让我很困惑,它说请求在客户端排队:
当活动呼叫数量达到连接流限制时,其他呼叫将在客户端中排队。排队的呼叫等待活动呼叫完成后再发送。
但请注意,微软在这里谈论的是连接流限制。当达到该限制时,客户端上会形成一个队列。
有两种类型的队列吗?一个是在满足某些限制时在服务器(gRPC 队列)上创建的(如上所述),另一个是在达到此连接流限制时在客户端上创建的。
gRPC 队列的大小限制是多少?我的意思是,它仅受底层硬件(RAM)的限制?
我们是否有可能因为队列大小过大而导致服务器失败?是否可以限制此队列大小?
如果我们谈论的是 2 个不同的队列,我们是否也可以管理和限制客户端上的队列?
我对python的观点特别感兴趣。
谢谢!
PS 我假设当人们谈论 gRPC 队列时,他们谈论的是在服务器上创建的队列。
| 归档时间: |
|
| 查看次数: |
4108 次 |
| 最近记录: |