Spring-boot 使用undertow代替tomcat

    技术2022-07-11  107

    Undertow是Red Hat公司的开源产品, 是一款灵活的高性能Web服务器,它完全采用Java语言开发,可以直接嵌入到Java项目中使用,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发。 Undertow在高并发业务场景中,性能优于Tomcat,对于并发要求不高的情况下,二者差别不大。 Undertow支持:Http2、web socket、servlet4.0。

    由于undertow优越的性能表现,很多玩家把tomcat替换为undertow。实现过程很简单,第一,禁用tomat,第二启用undertowm。

    1.修改pom.xml文件

    <!--禁用tomcat--> <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> <!--引入undertow--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>

    2.配置application.yml文件

    删除tomcat修改配置,然后插入下面undertow配置

    undertow: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 io-threads: 4 # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载 worker-threads: 20 # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理 # 每块buffer的空间大小,越小的空间被利用越充分 buffer-size: 1024 # 是否分配的直接内存 direct-buffers: true accesslog: #Undertow访问日志目录 dir: ./logs/access_log #是否启用访问日志 enabled: true #格式模式 pattern: common #日志文件名前缀 prefix: access_log. #启用访问日志轮换 rotate: true #日志文件名后缀 suffix: log #启动后是否立马初始化 servlet 过滤器 eager-filter-init: true #HTTP内容的最大字节数 max-http-post-size: 10MB
    Processed: 0.015, SQL: 9