zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    pip不是内部或外部命令也不是可运行的程序或批处理文件的问题
    动态规划 leetcode 343,279,91 & 639. Decode Ways,62,63,198
    动态规划 70.climbing Stairs ,120,64
    (双指针+链表) leetcode 19. Remove Nth Node from End of List,61. Rotate List,143. Reorder List,234. Palindrome Linked List
    建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237
    链表 206 Reverse Linked List, 92,86, 328, 2, 445
    (数组,哈希表) 219.Contains Duplicate(2),217 Contain Duplicate, 220(3)
    重装系统
    java常用IO
    端口
  • 原文地址:https://www.cnblogs.com/zrbfree/p/6708940.html
Copyright © 2011-2022 走看看