我目前正在开发一个Spring Boot应用程序,该应用程序必须同时处理尽可能多的http请求。这就是为什么我想修改线程数。
就我而言,我需要以编程方式进行操作。我现在真的不怎么处理它,因为我是Tomcat和Springboot的新手。
在这里,我提供了必须在端口80中运行的主要应用程序代码。
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {
public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
configurableEmbeddedServletContainer.setPort(80);
}
}
}
谢谢!
答案 0 :(得分:1)
您正在使用哪个嵌入式服务器?您可以使用Tomcat server.tomcat.max-threads
中的属性来控制线程数。 0
默认为Tomcat使用的200个线程。
当你说
我目前正在开发一个Spring Boot应用程序,该应用程序必须同时处理尽可能多的http请求。
您是否在意将太多请求发送到共享资源的性能成本,例如数据库?
如果您不想调整原始数字,而是希望有尽可能多的HTTP线程需要处理,那么您应该考虑在Spring中进行异步调用。
要在SpringBootApplication中启用异步调用,请执行以下操作:
@EnableSync
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
现在,您将可以使用在服务类中返回Completable<Future>
的方法。
除此之外,您实际上不应该真正处理Web服务层中的线程数。它实际上应该由应用程序服务器(Tomcat,Glassfish等)处理。它将同时处理并向您的方法发出请求。
如果在同一硬件上的代码中存在瓶颈,则增加线程数不会提高性能,反而有可能降低性能。
查看此处:Spring MVC Rest Services - Number of Threads (Controller Instances)
参考: https://www.e4developer.com/2018/03/30/introduction-to-concurrency-in-spring-boot/ https://spring.io/guides/gs/async-method/