SpringBoot内嵌tomcat调优
⽬录
Springboot Tomcat默认配置
可通过org.springframework.boot.autoconfigure.web.ServerProperties查看,其中包括属性tomcat、jetty、undertow三种服务器的设置,默认启⽤tomcat。
# tomcat 8
server:
tomcat:
accept-count:100 # 最⼤连接等待数,默认100
max-connections:10000 #最⼤连接数,默认为10000
max-threads:200 #最⼤⼯作线程数,默认200
min-spare-threads:10 #最⼩⼯作线程数,默认10
# tomcat 9
server:
tomcat:
max-connections:8192
accept-count:100
threads:
max:200
min-spare:10
最⼤连接数=max-connections + accept-count
最⼤并发数=max-threads
注:
maxIdleTime=60s # 线程空闲时间(springboot暂未提供该配置,在tomcat中硬编码60s,原⽣tomcat9提供配置maxIdleTime)
关于max-connections, accept-count, max-threads三者关系可参考:
Tomcat经验值
max-threads线程数的经验值为:
1核2g内存,线程数经验值200;
4核8g内存,线程数经验值800。
4核8g内存,建议值:
server:
tomcat:
accept-count:1000
max-connections:10000
max-threads:800
min-spare-threads:100
⾃定义Springboot Tomcat配置
⽰例代码中均为get⽅法,可调整为set⽅法进⾏配置设置
import http11.AbstractHttp11Protocol;
import http11.Http11NioProtocol;
import org.apache.logging.log4j.LogManager;servlet和tomcat的关系
import org.apache.logging.log4j.Logger;
import org.springframework.at.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import t.annotation.Configuration;
@Configuration
public class TomcatCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory>{
private static final Logger logger = Logger(TomcatCustomizer.class);
@Override
public void customize(TomcatServletWebServerFactory factory){
factory.addConnectorCustomizers(connector ->{
//AbstractHttp11Protocol protocol = (AbstractHttp11Protocol) ProtocolHandler();
Http11NioProtocol protocol =(Http11NioProtocol) ProtocolHandler();
logger.info(">>>>>>>>>>>>>>>>####"); logger.info("#");
logger.info("# TomcatCustomizer");
logger.info("#");
logger.info("# MaxConnections {}", MaxConnections());
logger.info("# AcceptorThreadCount {}", AcceptorThreadCount());
logger.info("# AcceptCount {}", AcceptCount());
logger.info("#");
logger.info("# MaxThread {}", MaxThreads());
logger.info("# MinSpareThreads {}", MinSpareThreads());
logger.info("#");
logger.info("# ConnectionTimeout {}", ConnectionTimeout());
logger.info("# KeepAliveTimeout {}", KeepAliveTimeout());
logger.info("# MaxKeepAliveRequests {}", MaxKeepAliveRequests());
logger.info("#");
logger.info(">>>>>>>>>>>>>>>>####");
});
}
}
运⾏结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
Tomcat中对静态资源的处理教程
« 上一篇
发表评论