我正在使用 Spring webflux。我将数百个并发请求发送到其余端点。当我检查时,只有 4 个线程被共享来处理所有负载。
这是正常的吗?是否有任何弹簧属性可以增加此计数?
- 反应堆-http-epoll-1
- 反应堆-http-epoll-2
- 反应堆-http-epoll-3
- 反应堆-http-epoll-4
我明白我可以使用反应器调度程序来卸载阻塞工作。我的问题更多 - 这 4 个线程是什么,我们在哪里有这个配置?
我正在使用 Spring webflux。我将数百个并发请求发送到其余端点。当我检查时,只有 4 个线程被共享来处理所有负载。
这是正常的吗?是否有任何弹簧属性可以增加此计数?
我明白我可以使用反应器调度程序来卸载阻塞工作。我的问题更多 - 这 4 个线程是什么,我们在哪里有这个配置?
默认线程数取决于主机系统的核心数。
记住,Webflux 会尽量让线程保持忙碌,所以你分配了多少线程并不重要,只要它们消耗了 CPU 的全部能量。
更多线程只需要等待轮到它们使用 CPU。
如果性能是一个问题,有多种方法可以获得更好的性能,例如让多个系统在前面使用负载均衡器或更多 cpu 内核,并尝试分析应用程序中需要时间的内容。
很难知道什么需要时间,因为您没有发布任何有关您的设置的信息。可能存在瓶颈,例如对其他缓慢的系统的休息调用、多个数据库连接、大型查询、大量数据处理等。
但是你看到的很正常,在这里得到了回答: