Spring Boot Sping Boot 最大请求数和线程数应为1(server.tomcat.max-threads=1)

nfeuvbwi  于 2023-03-08  发布在  Spring
关注(0)|答案(1)|浏览(185)

背景

我正在试验Spring Webflux,用于React式应用程序,我想看看应用程序中只有一个线程时的应用程序行为。

问题

我怎样才能让Spring只使用一个线程来处理所有可能到来的请求呢?
到目前为止,我设置了server.tomcat.max-threads=1,但是我仍然看到每个请求创建了多个线程。您可以看到下面运行应用程序的一些日志:

请让我知道,如果我错过了一些我应该添加到我的配置,使这项工作。
谢谢你的帮忙!

e3bfsja2

e3bfsja21#

默认情况下,WebFlux与Tomcat没有任何关系(不过,您可以将WebFlux配置为使用Tomcat/Undertow/Jetty而不是Netty)。
在WebFlux中,所有Web请求都由事件循环处理,内部使用React式Netty来处理Web请求。
用于处理Web请求的线程具有如下名称:
React器-HTT-NiO-4
如果你想配置事件循环使用的线程数,你可以在应用程序启动前通过一个VM参数来完成:

-Dreactor.netty.ioWorkerCount=1

例如,它看起来像这样:

java -jar application.jar -Dreactor.netty.ioWorkerCount=1

另外:您在日志中看到的parallel-n线程是来自并行调度程序的线程,与Flux.interval()方法一起使用。这些线程与服务Web请求的事件循环无关

相关问题