Spring Boot如何优化内嵌的Tomcat示例详解
程序员文章站
2024-02-28 18:23:28
前言
本文主要给大家介绍了关于spring boot优化内嵌tomcat的相关内容,分享出来供大家参考学习,下面话不多说了,来一看看详细的介绍吧。
spring boo...
前言
本文主要给大家介绍了关于spring boot优化内嵌tomcat的相关内容,分享出来供大家参考学习,下面话不多说了,来一看看详细的介绍吧。
spring boot测试版本
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.3.3.release</version> </parent> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> </dependencies>
springboot默认使用的是tomcat作为web server
springboot中默认可以通过配置如下参数设置内嵌容器tomcat的端口,最大线程数等等
server.port=8081 server.tomcat.max-threads=1000
但是,无法设置最大连接数,而最大连接数直接影响到tomcat的性能,如何调整这个最大连接数呢?
以下有三种方法
第一种:
package com.web.server; import org.apache.catalina.connector.connector; import org.apache.coyote.http11.http11nioprotocol; import org.springframework.boot.context.embedded.embeddedservletcontainer; import org.springframework.boot.context.embedded.servletcontextinitializer; import org.springframework.boot.context.embedded.tomcat.tomcatembeddedservletcontainerfactory; import org.springframework.stereotype.component; @component() public class myembeddedservletcontainerfactory extends tomcatembeddedservletcontainerfactory { public embeddedservletcontainer getembeddedservletcontainer(servletcontextinitializer... initializers) { //设置端口 this.setport(8081); return super.getembeddedservletcontainer(initializers); } protected void customizeconnector(connector connector) { super.customizeconnector(connector); http11nioprotocol protocol = (http11nioprotocol)connector.getprotocolhandler(); //设置最大连接数 protocol.setmaxconnections(2000); //设置最大线程数 protocol.setmaxthreads(2000); protocol.setconnectiontimeout(30000); } }
第二种:
package com.web.server; import org.apache.catalina.connector.connector; import org.apache.coyote.http11.http11nioprotocol; import org.springframework.boot.context.embedded.embeddedservletcontainerfactory; import org.springframework.boot.context.embedded.tomcat.tomcatconnectorcustomizer; import org.springframework.boot.context.embedded.tomcat.tomcatembeddedservletcontainerfactory; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; @configuration public class webserverconfiguration { @bean public embeddedservletcontainerfactory createembeddedservletcontainerfactory() { tomcatembeddedservletcontainerfactory tomcatfactory = new tomcatembeddedservletcontainerfactory(); tomcatfactory.setport(8081); tomcatfactory.addconnectorcustomizers(new mytomcatconnectorcustomizer()); return tomcatfactory; } } class mytomcatconnectorcustomizer implements tomcatconnectorcustomizer { public void customize(connector connector) { http11nioprotocol protocol = (http11nioprotocol) connector.getprotocolhandler(); //设置最大连接数 protocol.setmaxconnections(2000); //设置最大线程数 protocol.setmaxthreads(2000); protocol.setconnectiontimeout(30000); } }
第三种:
package com.web.server; import org.springframework.boot.context.embedded.configurableembeddedservletcontainer; import org.springframework.boot.context.embedded.embeddedservletcontainercustomizer; import org.springframework.boot.context.embedded.tomcat.tomcatembeddedservletcontainerfactory; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; @configuration public class webserverconfiguration { @bean public embeddedservletcontainercustomizer createembeddedservletcontainercustomizer() { return new myembeddedservletcontainercustomizer(); } } class myembeddedservletcontainercustomizer implements embeddedservletcontainercustomizer { public void customize(configurableembeddedservletcontainer container) { tomcatembeddedservletcontainerfactory tomcatfactory = (tomcatembeddedservletcontainerfactory)container; tomcatfactory.setport(8081); //下面的操作可以参照上面的方法 } }
最后,如果发现没有生效,就把application.properties配置里面关于tomcat的一些配置(server.*)全部删掉,就ok了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
推荐阅读
-
Spring Boot如何优化内嵌的Tomcat示例详解
-
Spring Boot如何使用JDBC获取相关的数据详解
-
Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解
-
Spring Boot如何优化内嵌的Tomcat示例详解
-
Spring Boot LocalDateTime格式化处理的示例详解
-
Spring Boot 定制与优化内置的Tomcat容器实例详解
-
如何优雅的处理Spring Boot异常信息详解
-
Spring Boot修改内置Tomcat默认端口号的示例
-
Spring Boot如何使用JDBC获取相关的数据详解
-
Spring Boot修改内置Tomcat默认端口号的示例