# 02-SpringBoot 常用配置

# 一、Tomcat配置

server:
  tomcat:
    max-connections: 8192
    accept-count: 800
    max-threads: 500
    min-spare-threads: 50
  1. max-connections : 最大连接数 tomcat能够接受的最大连接数。 对于Java的阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器,默认值将是执行器中maxthreads的值。对于Java 新的NIO模式,maxConnections 默认值是10000。 对于windows上APR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数。 如果设置为-1,则禁用maxconnections功能,表示不限制tomcat容器的连接数。 maxConnections和accept-count的关系为:当连接数达到最大值maxConnections后,系统会继续接收连接,但不会超过acceptCount的值
  2. accept-count : 等待队列长度 当请求数量超过最大连接数量后,队列允许的等待数量。当队列再满时,任何的连接请求都将被拒绝。
  3. max-threads : 最大线程数 每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认200。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。线程数的经验值为:1核2g内存,线程数经验值200;4核8g内存,线程数经验值800。
  4. **min-spare-threads : 最小工作空闲线程数 ** 默认10, 适当增大一些,以便应对突然增长的访问量

# 二、Spring提供默认线程池

# spring boot 在 TaskExecutionAutoConfiguration 默认提供了线程池

    /**
     *  线程池名称:applicationTaskExecutor 、 taskExecutor
     */
    @Lazy
    @Bean(name = {APPLICATION_TASK_EXECUTOR_BEAN_NAME,
            AsyncAnnotationBeanPostProcessor.DEFAULT_TASK_EXECUTOR_BEAN_NAME})
    @ConditionalOnMissingBean(Executor.class)
    public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {
        return builder.build();
    }

# 配置

#是否允许核心线程超时
spring.task.execution.pool.allow-core-thread-timeout=true
#核心线程数
spring.task.execution.pool.core-size=8
#允许的最大线程数。默认:Integer.MAX_VALUE 如果任务正在填充队列,则池可以扩展到该大小以容纳负载。如果队列没有边界,则忽略
spring.task.execution.pool.max-size= 16
#线程在终止前可以保持空闲的时间限制。默认:60秒
spring.task.execution.pool.keep-alive=60
#队列容量。无限容量不会增加池,因此忽略“max size”属性。默认:Integer.MAX_VALUE
spring.task.execution.pool.queue-capacity=2000
# 用于新创建线程名称的前缀。默认: "task-"
spring.task.execution.thread-name-prefix=

# 三、日志:spring-boot-starter-logging

logging.file.name=../log/demo-slf4j.log
logging.logback.rollingpolicy.max-history=20
# 按256Mb切分日志,不配置的话,默认10m
logging.logback.rollingpolicy.max-file-size=10MB
#必须要该路径,不然无法切分日志
logging.file.path=../log/
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logging.level.root=info
logging.level.web=debug

# 四、Spring Boot注解

Last Updated: 12/15/2023, 8:18:50 AM