专业的编程技术博客社区

网站首页 > 博客文章 正文

认识SpringBoot Server容器配置及undertow配置

baijin 2024-10-29 13:07:38 博客文章 18 ℃ 0 评论

Springboot常用包含3种Server容器,tomcat\jetty\undertow,我们了解一下对Server容器的配置。

参数配置

server.xx(如:server.port=8080)开头的是所有servlet容器通用的配置,server.tomcat.xx开头的是tomcat特有的参数,server.undertow则是undertow特有配置,其它类似。

server所有参数绑定配置类:org.springframework.boot.autoconfigure.web.ServerProperties

Undertow使用

spring boot内嵌容器默认为tomcat,想要换成undertow,非常容易,只需修改spring-boot-starter-web依赖,移除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>

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

这样即可,使用默认参数启动undertow服务器。

参数设置


server:
    port: 8080
    http2:
        enabled: true
    undertow:
        #IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接,默认设置每个CPU核心一个线程,不可设置过大,否则启动项目会报错:打开文件数过多
        io-threads: 16 
        #阻塞任务线程池,当执行类似servlet请求阻塞IO操作,undertow会从这个线程池中取得线程。它的值取决于系统线程执行任务的阻塞系数,默认值是 io-threads*8
        worker-threads: 256
        buffer-size: 1024
        buffers-per-region: 1024
        direct-buffers: true

以下配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理。

  • buffer-size:每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
  • buffers-per-region:每个区分配的buffer数量,所以pool的大小是buffer-size * buffers-per-region
  • direct-buffers:是否分配的直接内存(NIO直接分配的堆外内存)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表