springboot性能优化
一、扫描优化
原文链接:http://www.studyshare.cn/blog-front/blog/details/1135
SpringBoot项目中的启动类,会使用@SpringBootApplication 注解,该注解的作用扫描外部依赖项目(例如:Tomcat,SpringMVC,Transaction等)以及运行一些自动配置类。
@SpringBootApplication注解中包含了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan等等,通过以下配置
通过debug启动项目在控制台中会打印出日志:
通过上面的日志可以看出需要扫描匹配的项=Positive matches: 需要匹配项 + Unconditional classes: 必须匹配项,那么扫描优化就是将这些需要匹配的项直接通过@import注解直接引入,则节省出扫描时间。例:
如果启动一个大的应用程序或者将做大量的集成测试启动应用程序的时候,这种优化方式可以减少启动时间,避免加载其他不必要的资源,减少CPU的消耗。
二、JVM参数调优
先了解两个配置指令
(1)-Xmx:设置最大的java堆大小
(2) -Xms:设置Java堆栈的初始化大小
idea工具中配置jvm内存大小
对当前应用程序的堆内存最大配置为32M,初始配置为10M(可以根据自己的项目适当缩小,有的项目缩小到1M或者更小会无法启动,本人的机器设置为1M就无法启动项目),设置好后,启动项目,控制台打印结果如下:
控制台会频繁的输出GC和Full GC,因为配置的堆内存太小的原因,堆内存配置越大,GC和Full GC会出现的越少。在生产项目中,-Xmx和-Xms这两个值应该配置相同,并根据运行服务器硬件环境适当去配置。频繁的GC和Full GC是非常消耗CPU的性能的,JVM优化的重要指标就是不能频繁出现Full GC。
监控应用的内存使用,可以使用jdk提供的工具在jdk安装bin目录下jvisualvm.exe
三、根据项目采用合适的容器
现在最流行也最常用的就是tomcat容器,tomcat是默认支持jsp的,当然也可以去优化tomcat,关闭tomcat对jsp的支持。如果不优化tomcat也可以在项目中更换使用其他容器,例如:Undertow,该容器默认是不支持jsp。减少一些其他不需要的支持来提升容器启动和运行效率。
首先在pom.xml中排除使用tomcat容器
加入对Undertow容器的依赖
启动容器运行结果:
测试性能是否提升可以使用jMeter压测工具:
在项目中分别使用Tomcat和Undertow容器,然后使用jMeter工具进行压测,然后对比分别使用两个容器的并发处理能力。
更多深度技术好文:http://www.studyshare.cn/blog-front/index
springboot性能优化的更多相关文章
- 【SpringBoot】SpringBoot性能优化
Spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...
- SpringBoot入门-SpringBoot性能优化
SpringBoot启动优化 显示声明扫包范围: 即不使用@SpringBootApplication默认扫包,使用@ComponentScan(basePackages = { "com. ...
- springboot(十二) SpringBoot 性能优化
代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo springboot优化主要有三类优化:1.包扫描优化 2. ...
- SpringBoot性能优化之HikariCP连接池
以前一直使用阿里Druid数据库连接池,这段时间听说有个号称速度最快.代码最简的后起之秀——HikariCP,于是动手实践一下 1.依赖如下: <?xml version="1.0&q ...
- Java的性能优化
http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...
- Spring Boot 性能优化
spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
随机推荐
- AutoCompleteExtender 使用示例
绑定 KeyValuePair,网上很多例子,没有找到绑定键值对的,msdn上有例子,备忘一下. using FirstElite.Verify.Entity; using System; using ...
- [随笔][胡思乱想][唠叨][web server]
nginx是一个webserver,最基本的功能是发送静态的文件.类似于apache2的webserver,主要的功能就是响应请求,做出响应. 所说的服务器是安装了服务器软件的物理机,专用的服务器或者 ...
- C 语言经典例子
1. 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #inc ...
- A*搜索详解(1)——通往基地的最短路线
假设地图上有一片树林,坦克需要绕过树林,走到另一侧的军事基地,在无数条行进路线中,哪条才是最短的? 这是典型的最短寻径问题,可以使用A*算法求解.A*搜索算法俗称A星算法,是一个被广泛应用于路径优化领 ...
- 深入理解JavaScript事件循环机制
前言 众所周知,JavaScript 是一门单线程语言,虽然在 html5 中提出了 Web-Worker ,但这并未改变 JavaScript 是单线程这一核心.可看HTML规范中的这段话: To ...
- SourceInsight宏插件3(非常好用,强力推荐)
openfolder.em源码:(链接:https://pan.baidu.com/s/1draaimWzCHZ3vLxL--lfiQ 提取码:zyq4) //使用资源管理器打开当前文件所在文件夹, ...
- winmount导致资源管理器崩溃
今天,在别人电脑上遇到一个问题,右键点击某个特定文件夹会导致资源管理器崩溃重启,提示为: Runtime Error! Program: C:\Windows\Explorer.exe This ap ...
- PHP获取新插入的主键id
近期在做订单系统开发的时候遇到了此类情景,A表内插入后返回新插入的主键ID,然后用于B表插入数据并携带此id. 目前有几个方法总结 No1.每次插入数据之后返回A表内的最大值,但是对于多用户以及高并发 ...
- 2019.1.17 homework
1.求两个整型数较大值 #include<stdio.h>int compare_big(int var1,int var2);int main(void){ int big,x,y ...
- Django的安装和启动以及第一个工程的建立
---恢复内容开始--- 前提:已经安装了python和Anaconda (windows系统) 在Anaconda安装好之后,其文件夹下有一个叫做Anaconda Prompt的工具,类似windo ...