SpringBoot优化内嵌的Tomcat
pom文件的依赖
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>1.3.3.RELEASE</version> 5 </parent> 6 <dependencies> 7 <dependency> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-starter-web</artifactId> 10 </dependency> 11 </dependencies>
SpringBoot默认使用的是Tomcat作为web服务器
Springboot中可以通过配置文件配置如下参数设置内嵌容器Tomcat的端口,最大线程数等等
server.port=8081
server.tomcat.max-threads=1000
但是,无法设置最大连接数,而最大连接数直接影响到Tomcat的性能,如何调整这个最大连接数呢?
以下有三种方法:
一:
1 package com.web.server; 2 3 import org.apache.catalina.connector.Connector; 4 import org.apache.coyote.http11.Http11NioProtocol; 5 import org.springframework.boot.context.embedded.EmbeddedServletContainer; 6 import org.springframework.boot.context.embedded.ServletContextInitializer; 7 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 8 import org.springframework.stereotype.Component; 9 10 @Component() 11 public class MyEmbeddedServletContainerFactory extends TomcatEmbeddedServletContainerFactory 12 { 13 public EmbeddedServletContainer getEmbeddedServletContainer(ServletContextInitializer... initializers) 14 { 15 //设置端口 16 this.setPort(8081); 17 return super.getEmbeddedServletContainer(initializers); 18 } 19 20 protected void customizeConnector(Connector connector) 21 { 22 super.customizeConnector(connector); 23 Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler(); 24 //设置最大连接数 25 protocol.setMaxConnections(2000); 26 //设置最大线程数 27 protocol.setMaxThreads(2000); 28 protocol.setConnectionTimeout(30000); 29 } 30 }
二:(推荐)
1 package com.web.server; 2 3 import org.apache.catalina.connector.Connector; 4 import org.apache.coyote.http11.Http11NioProtocol; 5 import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; 6 import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer; 7 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 8 import org.springframework.context.annotation.Bean; 9 import org.springframework.context.annotation.Configuration; 10 11 @Configuration 12 public class WebServerConfiguration 13 { 14 @Bean 15 public EmbeddedServletContainerFactory createEmbeddedServletContainerFactory() 16 {
//构建EmbeddedServletContainerFactory的bean,获取到TomcatEmbeddedServletContainerFactory实例以后可以对tomcat进行设置 17 TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory(); 18 tomcatFactory.setPort(8081); 19 tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer()); 20 return tomcatFactory; 21 } 22 } 23 public class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer 24 {
@Override 25 public void customize(Connector connector) 26 { 27 Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler(); 28 //设置最大连接数 29 protocol.setMaxConnections(2000); 30 //设置最大线程数 31 protocol.setMaxThreads(2000); 32 protocol.setConnectionTimeout(30000); 33 } 34 }
三:
1 package com.web.server; 2 3 import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; 4 import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; 5 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 6 import org.springframework.context.annotation.Bean; 7 import org.springframework.context.annotation.Configuration; 8 9 @Configuration 10 public class WebServerConfiguration 11 { 12 @Bean 13 public EmbeddedServletContainerCustomizer createEmbeddedServletContainerCustomizer() 14 { 15 return new MyEmbeddedServletContainerCustomizer(); 16 } 17 } 18 19 public class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer 20 { 21 public void customize(ConfigurableEmbeddedServletContainer container) 22 { 23 TomcatEmbeddedServletContainerFactory tomcatFactory = (TomcatEmbeddedServletContainerFactory)container; 24 tomcatFactory.setPort(8081); 25 //下面的操作可以参照上面的方法 26 } 27 }
最后,如果发现没有生效,就把application.properties或者application.yml配置里面关于Tomcat的一些配置(server.*)全部删掉。

浙公网安备 33010602011771号