首页 > 其他分享 >Spring Boot - Undertow容器启动

Spring Boot - Undertow容器启动

时间:2022-09-21 09:58:53浏览次数:56  
标签:Web Undertow buffer Spring boot Boot server undertow

Undertow简介

  • Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器
  • Untertow 的特点:
    轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应 用可以小于 10MB 内存

Servlet3.1 支持:它提供了对 Servlet3.1 的支持

WebSocket 支持:对 Web Socket 完全支持,用以满足 Web 应用巨大数量的客户端

嵌套性:它不需要容器,只需通过 API 即可快速搭建 Web 服务器

  • 默认情况下 Spring Cloud 使用 Tomcat 作为内嵌 Servlet 容器,可启动一个 Tomcat 的 Spring Boot 程序与一个 Undertow 的 Spring Boot 程序,通过 VisualVM 工具进行比较,可看到 Undertow 性能优于 Tomcat

使用 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>

支持 HTTP2

// 在@Configuration的类中添加@bean
@Bean
UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
    
    UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
    
    // 这里也可以做其他配置
    factory.addBuilderCustomizers(builder -> builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true));
    
    return factory;
}

配置 Undertow

    # Undertow 日志存放目录
    server.undertow.accesslog.dir
    # 是否启动日志
    server.undertow.accesslog.enabled=false 
    # 日志格式
    server.undertow.accesslog.pattern=common
    # 日志文件名前缀
    server.undertow.accesslog.prefix=access_log
    # 日志文件名后缀
    server.undertow.accesslog.suffix=log
    # HTTP POST请求最大的大小
    server.undertow.max-http-post-size=0 
    # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
    server.undertow.io-threads=4
    # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
    server.undertow.worker-threads=20
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    # 每块buffer的空间大小,越小的空间被利用越充分
    server.undertow.buffer-size=1024
    # 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region
    server.undertow.buffers-per-region=1024
    # 是否分配的直接内存
    server.undertow.direct-buffers=true

标签:Web,Undertow,buffer,Spring,boot,Boot,server,undertow
From: https://www.cnblogs.com/leepandar/p/16714534.html

相关文章

  • springboot逆向工程
    通过逆向工程少写很多代码generatorConfig.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBati......
  • Spring Boot 两种部署到服务器的方式
    jar包(官方推荐)jar包方式启动,也就是使用springboot内置的tomcat运行。服务器上面只要你配置了jdk1.8及以上,就ok。不需要外置tomcat1.打成jar包2.将jar包放到任意目录......
  • 微服务网关 Spring Cloud Gateway
    什么是网关假设你现在要做一个电商应用,前端是移动端的APP,后端是各种微服务。那你可能某个页面需要调用多个服务的数据来展示。如果没有网关,你的系统看起来就是这个样子的:......
  • SpringIOC的理解
    IOC(InversionOfControl):控制反转控制:即对资源(如一个Java类)的获取方式获取方式可以分为两种主动获取在Spring之前我们想要获取一个类都是自己创建,即new出这个类......
  • Spring-01:初学资源准备及初始化spring项目
    1资源准备在学习Spring框架前,你需要先准备好相应的学习资源,以帮助更好地掌握基础知识,快速解决过程中遇到的问题。①spring官方文档https://spring.io/这里你可以快速......
  • SpringMVC学习笔记(五)
    注解配置MVC使用配置类和注解联合使用的方式代替xml配置文件 在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找......
  • Bootstrap Blazor V6.10.4 图标不正常显示升级处理
    更新日志V6.10.4fix(#I5R3SM):修复组件Table固定表头后允许列宽调整时导致不对齐问题#I5R3SM3250feat(#I5R3YG):BootstrapBlazor.FontAwesome更新到6.1.5老......
  • Spring框架
    Spring框架Java应用最广泛的框架,它的成功来源于理念,而不是技术本身IOC:控制反转AOP:面向切面编程DI:依赖注入非侵入式设计:不需要继承框架提供的任何一个类,即使跟换框......
  • 2022-9-20 Spring学习笔记
    目录1.Spring1.1JavaBean1.2Spring的优势1.3将对象放入IOC容器配置类赋值的方法根据不同类型的赋值作用域自动装配注解1.4类型转换1.SpringSpring框架是Java应用最广......
  • Spring框架:第四章:Spring管理数据库连接池
    6.1、Spring配置管理数据库连接池对象(重点)导入jar包druid-1.1.9.jarmysql-connector-java-5.1.37-bin.jar配置信息:<!--配置数据库连接池--><beanid="dataSource"clas......