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

时间:2015-08-10 07:10:30

标签: spring-boot

我想为我的应用程序配置使用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;
   }

3 个答案:

答案 0 :(得分:2)

说到spring-boot 2.0.0-SNAPSHOT:

这适用于jetty和tomcat,可以通过

进行配置
server.jetty.acceptors
server.tomcat.max-connections
server.undertow.io-threads

请参阅https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties以获取完整的参考资料。

答案 1 :(得分:0)

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

关于配置的正确性,您可以阅读此博客文章,该文章解释得非常好:here

答案 2 :(得分:0)

这是您可以做的:

在使用较新版本时,您需要在配置文件中创建服务器工厂bean。我在Spring Boot版本2.1.6上对此进行了测试,而我所指的文档是版本2.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;
    }

以下是指向Spring Docs的链接:customizing-embedded-containers