170322、Spring Boot 性能优化之将Servlet容器变成Undertow

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

       我们看看本节的大纲:

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

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

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

(1)SpringBoot之Tomcat内存情况;

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

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

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

170322、Spring Boot 性能优化之将Servlet容器变成Undertow_第1张图片

 

170322、Spring Boot 性能优化之将Servlet容器变成Undertow_第2张图片

 

170322、Spring Boot 性能优化之将Servlet容器变成Undertow_第3张图片

 

170322、Spring Boot 性能优化之将Servlet容器变成Undertow_第4张图片

 

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

 

(2)SpringBoot之Undertow内存情况;

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

       org.springframework.boot

       spring-boot-starter-web

       

        

            

                    org.springframework.boot

                    spring-boot-starter-tomcat

            

        

    

 

然后添加Undertow:

    

     

        org.springframework.boot

        spring-boot-starter-undertow

     

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

170322、Spring Boot 性能优化之将Servlet容器变成Undertow_第5张图片

 

170322、Spring Boot 性能优化之将Servlet容器变成Undertow_第6张图片

 

 

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

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

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

转载于:https://www.cnblogs.com/zrbfree/p/6708940.html

你可能感兴趣的:(170322、Spring Boot 性能优化之将Servlet容器变成Undertow)