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

3

我想为使用Spring Boot嵌入式Jetty服务器的应用程序配置线程池大小。以下是我正在使用的代码片段。

我想知道可以为嵌入式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个回答

4

0

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

关于配置的正确性,你可以阅读这篇博文,它很好地解释了:http://jdpgrailsdev.github.io/blog/2014/10/07/spring_boot_jetty_thread_pool.html


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文档的链接:customizing-embedded-containers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接