码迷,mamicode.com
首页 > 编程语言 > 详细

SpringBoot优化内嵌的Tomcat

时间:2016-08-09 02:14:54      阅读:403      评论:0      收藏:0      [点我收藏+]

标签:

SpringBoot测试版本

 

[html] view plain copy
 
 技术分享技术分享
  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 server

 

springboot中默认可以通过配置如下参数设置内嵌容器Tomcat的端口,最大线程数等等
server.port=8081
server.tomcat.max-threads=1000

但是,无法设置最大连接数,而最大连接数直接影响到Tomcat的性能,如何调整这个最大连接数呢?

以下有三种方法

一:

 

[java] view plain copy
 
 技术分享技术分享
  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. }  

 

 

二:

 

[java] view plain copy
 
 技术分享技术分享
  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.     {  
  17.         TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();  
  18.         tomcatFactory.setPort(8081);  
  19.         tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());  
  20.         return tomcatFactory;  
  21.     }  
  22. }  
  23. class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer  
  24. {  
  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. }  

三:

 

[java] view plain copy
 
 技术分享技术分享
  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. 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配置里面关于Tomcat的一些配置(server.*)全部删掉,就OK了。

http://blog.csdn.net/mn960mn/article/details/51306140

 

SpringBoot优化内嵌的Tomcat

标签:

原文地址:http://www.cnblogs.com/softidea/p/5751596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!