SpringBoot使用undertow
修改pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除掉默认支持的 Tomcat -->
<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>
相关配置:
server:
port: 8080
http2:
enabled: true
undertow:
#io-threads:IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接,默认设置每个CPU核心一个线程
#不可设置过大,否则启动项目会报错:打开文件数过多。
io-threads: 16
#worker-threads:阻塞任务线程池,当执行类似servlet请求阻塞IO操作,undertow会从这个线程池中取得线程。
#它的值取决于系统线程执行任务的阻塞系数,默认值是 io-threads*8
worker-threads: 256
## 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
buffer-size: 1024
# 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region
buffers-per-region: 1024
#direct-buffers:是否分配的直接内存(NIO直接分配的堆外内存)
direct-buffers: true
# 设置 HTTP POST 内容的最大长度,默认不做限制
max-http-post-size: 0
accesslog:
# 是否打开 undertow 日志,默认为 false
enabled: false
# 设置访问日志所在目录
dir: logs