一、扫描优化

原文链接: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

应用内存监控工具(jdk自带jvisualvm)

三、根据项目采用合适的容器

现在最流行也最常用的就是tomcat容器,tomcat是默认支持jsp的,当然也可以去优化tomcat,关闭tomcat对jsp的支持。如果不优化tomcat也可以在项目中更换使用其他容器,例如:Undertow,该容器默认是不支持jsp。减少一些其他不需要的支持来提升容器启动和运行效率。

首先在pom.xml中排除使用tomcat容器

pom中排除使用tomcat容器

加入对Undertow容器的依赖

加入undertow容器依赖

启动容器运行结果:

 

测试性能是否提升可以使用jMeter压测工具:

 

在项目中分别使用Tomcat和Undertow容器,然后使用jMeter工具进行压测,然后对比分别使用两个容器的并发处理能力。

更多深度技术好文:http://www.studyshare.cn/blog-front/index

springboot性能优化的更多相关文章

  1. 【SpringBoot】SpringBoot性能优化

    Spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...

  2. SpringBoot入门-SpringBoot性能优化

    SpringBoot启动优化 显示声明扫包范围: 即不使用@SpringBootApplication默认扫包,使用@ComponentScan(basePackages = { "com. ...

  3. springboot(十二) SpringBoot 性能优化

    代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo springboot优化主要有三类优化:1.包扫描优化 2. ...

  4. SpringBoot性能优化之HikariCP连接池

    以前一直使用阿里Druid数据库连接池,这段时间听说有个号称速度最快.代码最简的后起之秀——HikariCP,于是动手实践一下 1.依赖如下: <?xml version="1.0&q ...

  5. Java的性能优化

    http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...

  6. Spring Boot 性能优化

    spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...

  7. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  8. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  9. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

随机推荐

  1. python实现redis分布式锁

    https://www.cnblogs.com/wangwei916797941/p/10030805.html

  2. remove-weknow-ac from mac chrome

    refer:https://macreports.com/how-to-remove-weknow-ac-malware-macos/ 1-Remove the weknow.ac profile. ...

  3. zeebe 集成elasticsearch exporter

    zeebe 目前还在一直的开发中,同时一些变动还是挺大的,比如simple monitor 的以前是不需要配置HazelcastExporter的 估计是为了进行集群功能处理,新添加的,以前写的配置基 ...

  4. SMD 自动点料机维修

    SMD 自动点料机维修 这个工具是一个好帮手,但是过完年回来发现坏了. 设置了数量不会自动停,按停止键没有反应,一定要按打印键才能停止. 这可愁死我了. 正常情况下开机设置好数量,然后开始点数,点到数 ...

  5. char* 与 string 互转

    因为c#强调安全性,每次意图将string的地址赋给指针时,系统都要报错,原因是系统无法计算字符串的空间和地址,这里不多bb,使用IntPtr类(using Runtime.InteropServic ...

  6. 使用Visual Studio给SQL生成测试数据

    参考:http://www.cnblogs.com/CareySon/archive/2012/02/20/2359444.html 使用VS2010的数据生成计划来生成测试数据 以下面两个表来做例子 ...

  7. ubuntu安装yaf

    ubuntu 下PHP安装yaf扩展,需要先安装其他软件 sudo apt-get install libncurses5-dev libpcre3-dev pcre-devel -y 然后再执行 p ...

  8. Robot Framework脚本在jenkins执行完之后无法查看日志

    首先确保Robot Framework Plugin已经安装好,构建结束后test result和log.html等日志文件已显示,只是无法打开查看: 修改tomcat配置:vi tomcat/con ...

  9. python用字符串调用当前模块内的函数

    eval(字符串)() vars()[字符串]() 例如:

  10. glide 长方形图片显示圆角问题

    目前业务是RecyclerView嵌套RecyclerView,子RecyclerView里面显示图片,图片显示方式又分为 多图和单图显示方式(这个是已经调试好的效果) 测试显示结果只有单张图片不显示 ...