3

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

这是正常的吗?是否有任何弹簧属性可以增加此计数?

  • 反应堆-http-epoll-1
  • 反应堆-http-epoll-2
  • 反应堆-http-epoll-3
  • 反应堆-http-epoll-4

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

4

1 回答 1

2

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

记住,Webflux 会尽量让线程保持忙碌,所以你分配了多少线程并不重要,只要它们消耗了 CPU 的全部能量。

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

如果性能是一个问题,有多种方法可以获得更好的性能,例如让多个系统在前面使用负载均衡器或更多 cpu 内核,并尝试分析应用程序中需要时间的内容。

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

但是你看到的很正常,在这里得到了回答:

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

Webflux 并发模型

于 2020-08-31T22:24:26.553 回答