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