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