Spring boot Spring boot嵌入式Jetty线程池最大大小

Spring boot Spring boot嵌入式Jetty线程池最大大小,spring-boot,Spring Boot,我想为使用spring boot embedded jetty server的应用程序配置线程池大小。下面是我正在使用的代码片段 我想知道我可以为嵌入式jetty服务器设置的最大线程池大小是多少,这是配置它的正确方法吗 @Bean public EmbeddedServletContainerFactory jettyConfigBean() { JettyEmbeddedServletContainerFactory jef = new JettyEmbeddedServle

我想为使用spring boot embedded jetty server的应用程序配置线程池大小。下面是我正在使用的代码片段

我想知道我可以为嵌入式jetty服务器设置的最大线程池大小是多少,这是配置它的正确方法吗

@Bean
   public EmbeddedServletContainerFactory jettyConfigBean() {
      JettyEmbeddedServletContainerFactory jef = new JettyEmbeddedServletContainerFactory();
      jef.addServerCustomizers(new JettyServerCustomizer() {

         public void customize(org.eclipse.jetty.server.Server server) {
            final QueuedThreadPool threadPool = server.getBean(QueuedThreadPool.class);
            server.setHandler(handlers);
         }
      });
      return jef;
   }

您可以设置的最大线程数取决于您的计算机,而不是主机软件。如果你有一台怪物机器,你可能有数百个线程,而普通笔记本电脑可能只能处理几十个线程。您需要通过测试来优化配置。一个好方法是设置一个负载测试,例如查看50个线程(50 req/sec)是否会使您的服务崩溃,然后检查增加/减少线程数是否有帮助。使用这种技术,您可以发现应用程序和机器的局限性


关于配置的正确性,您可以阅读这篇博客文章,文章对此进行了很好的解释:

为spring boot 2.0.0-SNAPSHOT发言:

这适用于jetty、tomcat和底拖,可通过

server.jetty.acceptors
server.tomcat.max-connections
server.undertow.io-threads

有关完整的参考资料,请参阅。

您可以这样做:

在处理较新版本时,需要在配置文件中创建服务器工厂bean。我在SpringBootVersion2.1.6上测试了这个,而我提到的文档是针对Version2.3.3的

@Bean public ConfigurableServletWebServerFactory webServerFactory() { JettyServletWebServerFactory factory = new JettyServletWebServerFactory(); factory.setPort(8080); factory.setContextPath("/my-app"); QueuedThreadPool threadPool = new QueuedThreadPool(); threadPool.setMinThreads(10); threadPool.setMaxThreads(100); threadPool.setIdleTimeout(60000); factory.setThreadPool(threadPool); return factory; } @豆子 公共可配置ServletWebServerFactory webServerFactory(){ JettyServletWebServerFactory=新的JettyServletWebServerFactory(); 工厂设置端口(8080); setContextPath(“/my app”); QueuedThreadPool threadPool=新的QueuedThreadPool(); threadPool.setMinThreads(10); 线程池。setMaxThreads(100); threadPool.setIdleTimeout(60000); factory.setThreadPool(线程池); 返回工厂; } 以下是Spring文档的链接: