• 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)双击打开之后,你能在左边操作栏找到【本地】--【应用程序的包名】--【双击打开】:

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

    (2)SpringBoot之Undertow内存情况;

           我们将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个线程被开启。。

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

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

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

  • 相关阅读:
    【LeetCode】-- 73. Set Matrix Zeroes
    (第三场) A PACM Team 【dp,五维背包】
    POJ 1745 【0/1 背包】
    (第三场) H Diff-prime Pairs 【数论-素数线性筛法+YY】
    POJ 2299 【树状数组 离散化】
    树状数组 && 线段树应用 -- 求逆序数
    HDU 1698 【线段树,区间修改 + 维护区间和】
    HDU 1166 【线段树 || 树状数组,单点修改 维护区间和】
    (第二场)D Money 【dp贪心】
    (第二场)A Run 【动态规划】
  • 原文地址:https://www.cnblogs.com/zrbfree/p/6708940.html
Copyright © 2020-2023  润新知