Spring Boot 学习系列(11)—tomcat参数配置建

时间:2021-03-13 14:50:53

此文已由作者易国强授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

  • 在SpringBoot项目中,使用的是内嵌的Tomcat容器,相关的配置项如下表:

Spring Boot 学习系列(11)—tomcat参数配置建

  • 除去和默认值相同的配置,在项目中建议添加的配置如下:

    server.tomcat.minSpareThreads=50server.tomcat.maxThreads=1024server.tomcat.maxHttpPostSize=20971520server.tomcat.remoteIpHeader=X-Forwarded-For
    server.tomcat.basedir=.
    server.tomcat.accesslog.enabled=true
    server.tomcat.accesslog.pattern=%{X-Real-IP}i %l %u %t "%r" %s %b %D %T %{Referer}i "%{User-Agent}i" %I %v %aserver.tomcat.accesslog.prefix=access.logserver.tomcat.accesslog.suffix=
    server.tomcat.accesslog.renameOnRotate=true
  • 前缀为server的配置项,对应的配置类为org.springframework.boot.autoconfigure.web.ServerProperties,ServerProperties类中有一个内部类Tomcat,对应前缀为server.tomcat的配置项。

  • 项目启动时,这些配置会被set到org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory类中(引入spring-boot-starter-web依赖,会自动引入spring-boot-starter-tomcat,就是说tomcat是系统默认的容器,所以会自动初始化),之后TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer()创建并启动Tomcat容器实例。

  • Tomcat内部使用的是java.util.concurrent.ThreadPoolExecutor线程池,容器启动时会在org.apache.tomcat.util.net.AbstractEndpoint.createExecutor()这里创建线程池,所以其中最大最小线程数、线程创建、销毁和分配的策略其实都是ThreadPoolExecutor的特性。

  • 不足之处,欢迎指正,谢谢~

免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请点击

相关文章:
【推荐】 发布流程进化史