SpringBoot将默认的Tomcat替换为Undertow

SpringBoot将默认的Tomcat替换为Undertow

木子李 278 2022-03-03

SpringBoot将默认的Tomcat替换为Undertow

SpringBoot 可以无缝衔接三大 Servlet 容器,Tomcat、Jetty、Undertow,但是 Undertow 性能相较前两者更加优异

SpringBoot 快速集成Undertow

添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

修改application.yml文件

server:
  undertow:
    # 日志设置
    accesslog:
      # 开启日志
      enabled: true
      # 日志文件夹
      dir: logs
    # 线程配置
    threads:
      # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
      # 不要设置过大,如果过大,启动项目会报错:打开文件数过多
      io: 16
      # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
      # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
      worker: 256
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    # 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
    buffer-size: 1024
    # 是否分配的直接内存(NIO直接分配的堆外内存)
    direct-buffers: true

启动项目


可以看到项目启动成功