springboot tomcat默认线程数_Spring Boot如何优化内嵌的Tomcat示例详解

本文介绍了Spring Boot如何调整内嵌Tomcat的最大连接数和最大线程数,提供了三种不同的配置方法,并强调清除application.properties中相关配置以确保生效。
摘要由CSDN通过智能技术生成

前言

本文主要给大家介绍了关于Spring Boot优化内嵌Tomcat的相关内容,分享出来供大家参考学习,下面话不多说了,来一看看详细的介绍吧。

Spring Boot测试版本

org.springframework.boot

spring-boot-starter-parent

1.3.3.RELEASE

org.springframework.boot

spring-boot-starter-web

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了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值