SpringBoot测试版本

  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的性能,如何调整这个最大连接数呢?

以下有三种方法

一:

  1. package com.web.server;
  2. import org.apache.catalina.connector.Connector;
  3. import org.apache.coyote.http11.Http11NioProtocol;
  4. import org.springframework.boot.context.embedded.EmbeddedServletContainer;
  5. import org.springframework.boot.context.embedded.ServletContextInitializer;
  6. import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
  7. import org.springframework.stereotype.Component;
  8. @Component()
  9. public class MyEmbeddedServletContainerFactory extends TomcatEmbeddedServletContainerFactory
  10. {
  11. public EmbeddedServletContainer getEmbeddedServletContainer(ServletContextInitializer... initializers)
  12. {
  13. //设置端口
  14. this.setPort(8081);
  15. return super.getEmbeddedServletContainer(initializers);
  16. }
  17. protected void customizeConnector(Connector connector)
  18. {
  19. super.customizeConnector(connector);
  20. Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler();
  21. //设置最大连接数
  22. protocol.setMaxConnections(2000);
  23. //设置最大线程数
  24. protocol.setMaxThreads(2000);
  25. protocol.setConnectionTimeout(30000);
  26. }
  27. }

二:

  1. package com.web.server;
  2. import org.apache.catalina.connector.Connector;
  3. import org.apache.coyote.http11.Http11NioProtocol;
  4. import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
  5. import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
  6. import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. @Configuration
  10. public class WebServerConfiguration
  11. {
  12. @Bean
  13. public EmbeddedServletContainerFactory createEmbeddedServletContainerFactory()
  14. {
  15. TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();
  16. tomcatFactory.setPort(8081);
  17. tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());
  18. return tomcatFactory;
  19. }
  20. }
  21. class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer
  22. {
  23. public void customize(Connector connector)
  24. {
  25. Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
  26. //设置最大连接数
  27. protocol.setMaxConnections(2000);
  28. //设置最大线程数
  29. protocol.setMaxThreads(2000);
  30. protocol.setConnectionTimeout(30000);
  31. }
  32. }

三:

  1. package com.web.server;
  2. import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
  3. import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
  4. import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. @Configuration
  8. public class WebServerConfiguration
  9. {
  10. @Bean
  11. public EmbeddedServletContainerCustomizer createEmbeddedServletContainerCustomizer()
  12. {
  13. return new MyEmbeddedServletContainerCustomizer();
  14. }
  15. }
  16. class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer
  17. {
  18. public void customize(ConfigurableEmbeddedServletContainer container)
  19. {
  20. TomcatEmbeddedServletContainerFactory tomcatFactory = (TomcatEmbeddedServletContainerFactory)container;
  21. tomcatFactory.setPort(8081);
  22. //下面的操作可以参照上面的方法
  23. }
  24. }

最后,如果发现没有生效,就把application.properties配置里面关于Tomcat的一些配置(server.*)全部删掉,就OK了。

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

SpringBoot优化内嵌的Tomcat的更多相关文章

  1. SpringBoot 优化内嵌的Tomcat

    在通过SpringBoot调用其它服务时,报错 org.springframework.web.client.ResourceAccessException: I/O error on POST re ...

  2. SpringBoot优化内嵌的Tomcat ---设置MaxConnections

    使用kill -9杀掉springboot应用后,立马java -jar重启,会报错,需要等待一段时间才能启动成功,报错的原因是:/tmp/tomcat-docbase.474979491043437 ...

  3. 015-Spring Boot 定制和优化内嵌的Tomcat

    一.内嵌web容器 参看http://www.cnblogs.com/bjlhx/p/8372584.html 查看源码可知提供以下三种: 二.定制优化tomcat 2.1.配置文件配置 通过appl ...

  4. springBoot定制内嵌的Tomcat

    此篇仅介绍配置方式,详细配置内容百度查阅 工程结构: 可以通过配置的方式设置参数,如下 application.properties #配置tomcat端口 # server.port= 8888 # ...

  5. Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现

    Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现 Anoyi 精讲JAVA 精讲JAVA 微信号 toooooooozi 功能介绍 讲解java深层次 ...

  6. springboot去除内嵌tomcat和打包在tomcat中运行需要做的步骤

    去除内嵌tomcat和添加jsp依赖 去除内嵌tomcat 在springboot启动依赖中去除内嵌tomcat <dependency> <groupId>org.sprin ...

  7. SpringBoot Boot内嵌Tomcat

    Spring Boot: SpringBoot-start-web 里面依赖的环境中 如果是外部的Tomcat 容器,可以通过修改config进行配置 内嵌的呢? 如何定制和修改Servlet容器的相 ...

  8. Spring Boot 定制与优化内置的Tomcat容器

    1.Spring Boot定制与优化内置Tomcat容器. > 内置的容器有三个分别是Undertow.Jetty.Tomcat,Spring Boot 对这三个容器分别进行了实现,它们上层接口 ...

  9. springboot~mongo内嵌集合的操作

    对于mongodb的内嵌对象的各种操作大叔在.net平台时已经说过,同时大叔也自己封装过mongo的仓储,使用也都很方便,而在java springboot框架里当然也有对应的方法,下面主要说一下,希 ...

随机推荐

  1. 利用raspberry pi搭建typecho笔记(二) sqlite和typecho部署

    sqlite概述 typecho可以支持MYSQL和Sqlite两种数据库,因为Sqlite更为轻量,并且不需要额外的进程,而是直接对数据库文件进行读取,所以配置相对于MySQL也更为简单,仅需指定数 ...

  2. QSizePolicy可均匀调整控件的大小,还可设置比例,非常完美(每个QWidget都有这个功能)

    http://blog.csdn.net/liang19890820/article/details/51986284 它是QWidget的固有属性: http://doc.qt.io/qt-4.8/ ...

  3. 创业不要在IT业内创(市场太小,而且都喜欢自己折腾、没有花钱的习惯)

    精神是好的.但是,我看了你的产品和网站:你选的创业方向基本是死路一条,我劝你该放弃就放弃.我判断你的思路还局限在IT行业内,创业不要在IT业内创,要走出去,睁开眼看看别人的世界,自己体会.我不是打击你 ...

  4. Silverlight 结合ArcGis 在地图上画线

    原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/10/72085.aspx 先来看看完成后的画面,我从桃园画到高雄,再由高雄画到香港 ...

  5. 【DP问题集】动态规划试题

    1.背包问题 给定n种物品和一背包.物品i的重量是wi,其价值为pi,背包的容量为C.问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 分析: ①每个物品只有两种选择,要么就是塞到包里面, ...

  6. iptables or netfilter

    netfilter 内部有三个表:filter .nat .mangle 每个表又有不同的操作链: 1.在filter这个防火墙功能的表中有三个chain:INPUT.FORWARD.OUTPUT. ...

  7. Nginx PHP MySql 编译安装

    以CentOS5.6为平台编译安装.确保系统已经安装gcc/gcc-c++编译器! 1.Nginx-1.0.14 2.PHP-5.3.10 3.MySql-5.1.61 安装相关依赖开发库: auto ...

  8. cocos2dx 3.1从零学习(三)——Touch事件(回调,反向传值)

    第三讲 Touch 前面两篇我们学习的内容,足够我们做一款简单的小游戏.也能够说,我们已经入门了,能够蹒跚的走路了. 本篇将解说cocos2dx中非常重要的touch回调机制.你肯定记得第一章做定时器 ...

  9. ARM LDR伪指令使用方法具体解释

    LDR伪指令 10.45 LDR pseudo-instruction   功能:把一个32位马上数或一个32位的内存地址载入到一个寄存器中. 注意:这里描写叙述的是LDR伪指令,而不是LDR指令   ...

  10. hdu1753()模拟大型实景数字相加

    标题信息: 手动求大的实数在一起, pid=1753">http://acm.hdu.edu.cn/showproblem.php?pid=1753 AC代码: /**  *大实数相加 ...