`

111. Spring Boot 性能优化之将Servlet容器变成Undertow【从零开始学Spring Boot】

阅读更多

     

需求缘起:在研究Spring Boot加速启动的时候,发现我们在实际中,可能比较注重我们服务器的内存的情况,那么我们会想如果在启动的时候,所占用的内存越低是越好,基于这个想法,我们看看Spring Boot启动之后的一个内存占用情况。

       我们看看本节的大纲:

(1)Spring Boot之Tomcat内存情况;
(2)Spring Boot之Undertow内存情况;

 

       接下来看下具体看下每个部分的内容:

 

1Spring BootTomcat内存情况;

       我们知道,默认情况下,Spring Boot使用Tomcat来作为内嵌的Servlet容器。我们启动项目之后可以使用VisualVM进行查看应用所占的内存情况:

1)进入到你的jdk的安装目录下bin,找到:jvisualvm.exe,双击打开

2)双击打开之后,你能在左边操作栏找到【本地--应用程序的包名--【双击打开】:



 

 

 



 

 

   

以上是我使用Spring Boot默认的方式启动应用后,用VisualVM监控到的内存占用情况:堆内存占用50M17个线程被开启。没有比较就没有伤害,一比我吓一跳,哈哈,单独的一个tomcat是无法看出来效果的,我们看看Undertow的情况下。

 

2Spring BootUndertow内存情况;

       我们将Web服务器切换到Undertow来提高应用性能。Undertow是一个Java开发的灵活的高性能Web服务器,提供包括阻塞和基于NIO的非阻塞机制。Undertow是红帽公司的开源产品,是Wildfly默认的Web服务器。首先,从依赖信息里移除Tomcat配置:

<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:

    <!-- 添加 Undertow依赖 -->

    <dependency> 

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-undertow</artifactId>

    </dependency> 

       启动项目,用VisualVM监控到的信息显示:堆内存占用50M,16个线程被开启。。



 

 

 

我这里只是一个Hello World代码,实际项目中应该会更明显。

具体可以参考国外的一篇文章进行学习研究:

https://alexecollins.com/spring-boot-performance/

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

 

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

  • 大小: 6.8 KB
  • 大小: 7.6 KB
  • 大小: 13.3 KB
  • 大小: 7.7 KB
  • 大小: 9.6 KB
  • 大小: 6.6 KB
分享到:
评论

相关推荐

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    3. 内嵌式Servlet容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署WAR文件。 4. 健康检查:提供健康检查API,用于监控系统状态。 5. 配置文件:通过application.properties或application.yml进行...

    从零开始学spring boot

    《从零开始学Spring Boot》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...

    Spring Boot讲义.pdf

    - **独立运行的Spring应用**:Spring Boot可以创建独立的Spring应用程序,开发者无需部署WAR包到外部的Servlet容器中。 - **内嵌的服务器**:如Tomcat、Jetty或Undertow等,使得项目可以打包成一个JAR文件直接运行...

    SpringBoot之配置嵌入式Servlet容器.pdf

    例如,要注册一个Servlet组件,首先需要编写一个继承自HttpServlet的Servlet实现类,然后创建一个ServletRegistrationBean的Bean,将Servlet实例包装后添加到Spring Boot的Bean容器中,并且可以设置Servlet的加载...

    Spring Boot实现Undertow服务器同时支持HTTP2、HTTPS的方法

    Spring Boot实现Undertow服务器同时支持HTTP2、HTTPS的方法 在本文中,我们将讨论如何让Spring Boot应用程序同时支持HTTP和HTTPS两种协议。首先,我们需要了解什么是HTTP2和HTTPS,以及它们的优点和缺点,然后我们...

    spring-boot-reference.pdf

    Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...

    Spring Boot 教程、技术栈示例代码,快速简单上手教程。

    Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,使得开发者可以“零配置”地启动项目,...

    Spring Boot 微框架.pdf

    Spring Boot旨在快速开发独立的、生产级别的Spring基础的应用程序,其核心特性包括自动配置、嵌入式Web服务器(如Tomcat、Jetty或Undertow)以及无需代码生成和XML配置。 在Spring Boot的开发流程中,通常会涉及...

    Spring Boot 教程.docx

    - **嵌入式服务器**:Spring Boot 支持嵌入 Tomcat、Jetty 或者 Undertow,使得开发者不再需要部署外部容器。 - **简化安全配置**:Spring Security 可以轻松地集成到 Spring Boot 应用中,简化了安全配置。 - **...

    Spring Boot核心技术-笔记-pdf版.pdf

    Spring Initializr是一个在线生成Spring Boot项目结构的工具,通过选择技术栈、版本等,可以快速生成一个基础的Spring Boot项目结构,便于开发者快速开始编码。 8. **Web开发** Spring Boot对Web开发提供了很好的...

    spring-boot深入浅出

    2. **内嵌服务器(Embedded Servers)**:Spring Boot支持内嵌Tomcat、Jetty或Undertow服务器,这样可以直接运行打包后的jar文件,而无需额外部署到外部容器,大大提高了开发效率。 3. **自动配置(Auto ...

    Spring Boot in Action 英文版

    Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...

    spring boot基础笔记

    Spring Boot内嵌了Tomcat,Jetty或Undertow等Servlet容器,简化了Web项目的配置和部署。 2. Spring Boot项目创建:在IntelliJ IDEA中创建Spring Boot项目时,可以通过Spring Initializr来选择所需的依赖并构建项目...

    spring-boot

    5. 内嵌服务器支持:Spring Boot支持运行Spring应用的嵌入式Servlet容器,如Tomcat, Jetty或Undertow。使用内嵌服务器可以避免在外部部署应用。 6. 监控和管理:Spring Boot提供了多种管理和监控应用的方法,比如...

    Demo project for Spring Boot

    Spring Boot本身并不替代Spring,而是对Spring Framework的封装和优化,使得开发者可以快速构建可独立运行的Spring应用程序。 **1. 快速启动** Spring Boot的亮点之一就是“起步依赖”(Starter Dependency)。...

    无涯教程网-Spring-Boot电子教程.pdf

    开发者在主类文件中添加@EnableAutoConfiguration注解或@SpringBootApplication注解后,Spring Boot将开始扫描类路径上所有可用的jar包,并根据所发现的库和类自动配置Spring应用。例如,如果类路径上有数据库连接池...

    spring boot入门教程

    3. **内嵌式服务器**:Spring Boot 内嵌了 Tomcat、Jetty 或 Undertow 服务器,这意味着你可以直接在应用中运行 Spring Boot 应用程序,而无需单独安装 Web 服务器。 4. **自动配置**:Spring Boot 可以根据添加到...

    spring-boot-reference-2.1.14.RELEASE.pdf

    从创建一个新的Spring Boot项目开始,通常包括以下步骤: 1. **创建POM或build.gradle文件**:定义项目的构建配置和依赖关系。 2. **添加classpath依赖**:根据需要添加的Spring Boot Starter依赖。 3. **编写代码*...

    spring boot 简单实现

    2. 内嵌式容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow等Servlet容器,使得应用可以无需打包成WAR文件,直接运行JAR文件。 3. Starter POMs:Spring Boot提供了很多Starter依赖,如web、data、security等,只...

Global site tag (gtag.js) - Google Analytics