当前位置: 首页 > 知识库问答 >
问题:

grpc:只有一个服务器线程处理所有请求

戎元忠
2023-03-14

我有一个用C#编写的grpc服务,它有2个调用,如Start和Stop。当客户端调用Start(这个调用需要很多时间),然后Stop服务器同步处理请求,而grpc启动了4个线程。

2016-12-01 18:55:14,199,INFO,grpc 2 (cq 2),0 parsing.c:659: HTTP:17:HDR:SVR: :path: /Service/Start
2016-12-01 18:55:14,303 [grpc 2 (cq 2)] DEBUG [RPC:27] Start
2016-12-01 18:55:14,822,INFO,grpc 0 (cq 0),0 parsing.c:659: HTTP:19:HDR:SVR: :path: /Service/Stop
2016-12-01 18:55:33,661 [grpc 2 (cq 2)] DEBUG [RPC:27] Stop

您能帮我了解它是否按设计运行,或者我错过了任何其他设置吗?

共有1个答案

骆鸿运
2023-03-14

它按设计运行,您必须使用异步/等待同步调用,以避免阻塞完成队列的线程。

 类似资料:
  • 我尝试分析一个gRPC java服务器。我主要看到下面的一组线程池。 null

  • 问题:当我创建一个自定义线程以异步方式处理传入的HTTP请求时,我是否真的因为引入了太多线程而损害了性能? 更多细节:假设传入的请求需要执行一些繁重的数据库操作。Web服务器负载很重,在任何给定时刻,10个请求处理线程都在忙于处理请求。服务器有10个核心,所以假设每个核心运行一个线程。 请求以同步方式处理,每个请求处理线程从到达到完成处理作业。但是需要对数据库进行一些等待。 可能的“改进”是稍微更

  • 通过定义节流限制来解决:这里定义的相同:Spring batch Multithreading:节流限制影响 我注意到当我用20k条记录运行批处理时,一些线程已经开始处理,但在10个请求后就停止了。但是,其他线程正在正常处理。你能建议一下问题是什么吗?如果我保持corepoolsize=threadpoolsize=5,那么所有的线程都是正确分布的。

  • 我试图使用服务总线队列作为IoT中心终结点将消息从IoT中心路由到函数应用。发送到IoT中心的消息在IoT中心中注册,但不会路由到服务总线队列。当我监视服务总线队列时,我只看到成功的请求。 我使用以下标准实现了两个路由规则: 和 我用Azure提供的示例测试了第二个,结果与之匹配。它们似乎都没有将消息转发到服务总线。 在下面找到一条示例消息,我正在尝试发送该消息。

  • 如果我们在一台有两个处理器的机器上有两个正在运行的线程,我们调用

  • 在Flink中,像“平面地图”、“地图”等运算符称为任务,如果我将平面地图的并行度设置为30,那么这个任务有30个子任务。 现在,如果我只有一个插槽,它会在一个插槽中产生多个线程吗?还是每个插槽只有一个线程? Flink会在该插槽中简单地创建30个线程,还是使用类似线程池的东西? 以上不是一个恰当的例子。 假设在作业中我有操作符flatMap和map,它们都有并行度1,我只有一个插槽,这个插槽会创