您的位置:首页 > 编程语言 > Java开发

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

2017-04-14 15:01 801 查看
需求缘起:在研究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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: