`

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

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

    2020最新-百战程序员-SpringBoot视频教程入门到高级(高薪必备技能).txt

    根据给定文件的信息,我们...通过以上学习路径,开发者可以从零开始逐步掌握Spring Boot及其相关技术栈,最终成为一名合格的Spring Boot开发者。在整个过程中,持续实践和参与开源项目对于提升技能也是非常有帮助的。

    从零搭建Spring Boot脚手架,开篇以及技术选型.docx

    对于已经具备一定Spring Boot使用经验但希望进一步深入学习、熟练掌握该框架特性的开发者而言,从零开始搭建一个完整的后端脚手架不仅有助于加深对Spring Boot的理解,还能提供一系列实用的解决方案。本文旨在通过...

    基于Spring Boot和Layui的JavaEE四六级报名系统设计源码

    通过Layui,开发者可以利用其提供的模块快速实现复杂的界面功能,而不必从零开始编写大量的JavaScript代码。 本项目源码包含297个文件,其中包括86个GIF动画、52个PNG图像、43个JavaScript文件、36个Java源文件、34...

    (springboot+mysql) 在线学习网站.zip

    自动配置可以大幅减少开发者的配置工作量,内嵌服务器如Tomcat、Jetty或Undertow使得开发者不需要额外部署Servlet容器,而微服务支持则是指Spring Boot天然支持微服务架构设计,能够轻松构建分布式应用。 其次,...

    中文版本springboot

    同时,它还要求有适当的Servlet容器,因为Spring Boot内嵌了如Tomcat、Jetty、Undertow等Web服务器。 ### Spring Boot安装 Spring Boot安装包括了为Java开发者准备的安装指南,详细介绍了如何使用不同的包管理工具...

    spring含Maven构建、Docker镜像创建及应用部署.zip

    通过学习本项目,开发者可以掌握如何从零开始构建一个可部署的应用,并且了解如何将应用容器化,以便在不同环境中部署和运行。 此外,该项目还适合用于计算机相关的毕业设计课题和课程作业,尤其是对于人工智能、...

    springboot旧物置换网站(项目视频+源码+lw+db).zip

    Spring Boot还使用了嵌入式Tomcat、Jetty或Undertow等Servlet容器,这样应用就可以直接打包为一个可执行的JAR或WAR文件,方便部署。 旧物置换网站是一种以物换物的网络平台,它允许用户在平台上发布他们想要交换的...

    springboot2092安康旅游网站的设计与实现.zip

    它的设计思想使它能够轻松地与已有的项目进行整合,或者从零开始构建新的单页面应用程序(SPA)。Vue的响应式系统和组件化特性使得前端开发更为高效和便捷。 项目中使用的JDK版本为JDK1.8。这一版本引入了lambda...

    【Java】一个基于SpringBoot的微服务脚手架.zip

    其次,Spring Boot内嵌了Tomcat、Jetty或Undertow等Servlet容器,这使得它成为一个独立的应用服务器,可以直接打包成一个可执行的jar文件,运行时无须依赖外部的Servlet容器。 接下来,我们深入探讨微服务脚手架...

    java-springboot+vue点餐平台设计与实现源码(完整前后端+mysql+说明文档+LunW).zip

    Spring Boot的核心特性之一是能够创建独立的Spring应用程序,其内部集成了Tomcat、Jetty或Undertow等Servlet容器,无需部署WAR文件。 Vue.js是另一项引领前端开发的技术,它是一个用于创建用户界面的渐进式框架。...

    SpringBoot购物推荐网站的设计与实现及源码数据库和论文

    学生可以通过阅读这些资料,更好地理解系统的工作原理,掌握如何从零开始设计和实现一个完整的Web应用。 本系统不仅为计算机专业的学生提供了一个实践的平台,还为他们提供了全面的学习资源。通过对该系统的开发和...

Global site tag (gtag.js) - Google Analytics