WebFlux - Reactor Http Epoll 线程

Ram*_*ash 5 project-reactor spring-webflux spring-reactor

我正在使用 Spring webflux。我向其余端点发送数百个并发请求。当我检查时,只有 4 个线程被共享来处理所有负载。

这是正常的吗?有没有弹簧属性可以增加这个计数?

  • reactor-http-epoll-1
  • reactor-http-epoll-2
  • reactor-http-epoll-3
  • reactor-http-epoll-4

我确实知道我可以使用反应堆调度程序来卸载阻塞工作。我的问题更多的是 - 这 4 个线程是什么以及我们在哪里有这个配置?

Tho*_*olf 5

默认线程数取决于主机系统的核心数量。

请记住,Webflux 会尝试使所述线程尽可能繁忙,因此您分配的线程数量并不重要,只要它们消耗了 CPU 的全部功率即可。

更多线程只需等待轮到它们使用 CPU。

如果性能是一个问题,有多种方法可以获得更好的性能,例如通过在多个系统中安装负载均衡器或更多 CPU 核心,并尝试分析应用程序中花费的时间。

由于您没有发布任何有关您的设置的信息,因此很难知道什么花费了时间。可能存在瓶颈,例如对其他系统的缓慢调用、多个数据库连接、大型查询、大量数据处理等。

但您所看到的情况是很正常的,并在此得到解答:

spring-webflux-and-reactor 的线程模型

Webflux并发模型