一、扫描优化

原文链接: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. 关于pycharm中缩进、粘贴复制等文本编辑功能部分失效的解决办法

    有可能是同时安装了vim,冲突导致: 在seetings中点击Plugins,搜索vim卸载后功能恢复

  2. 二进制中的个数(JAVA)

    二进制中的1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路:用位运算来进行移1操作.(首先得知道数在计算机中都是以01来放置的) 1,若由一个数11100,当 ...

  3. influxdb 全家桶运行

    一个简单的demo,集成了telegraf,influxdb,chronograf,kapacitor,nginx,一张来自官方的参考图 组件集成图 环境准备 使用docker-compose doc ...

  4. Linux下的常用文本编辑器

    Linux的文本编辑器 ed 在早期的unix平台上,ed可以说是唯一的编辑工具.它是一个很古老的行编辑器,vi这些编辑器都是从ed 演化而来.行编辑器使用起来很不方便,每次只能对一行进行操作,.而后 ...

  5. Ant将Jmeter的jtl文件转为html文件报“前言中不允许有内容”

    ant执行jmeter的脚本的时候提示“Fatal Error! 前言中不允许有内容” 解决办法: 在jmeter的bin目录中找到jmeter.properties: 将文件中#jmeter.sav ...

  6. 如何使用linux+xvfb+python+rfs+firefox+jenkins实现UI自动化

    首先说一下背景,在项目中使用windows执行机进行rfs脚本运行时,遇到两个问题: 1.Jenkins的多个slave节点和master的连接通过windows插件去建立,如果出现slave断连,无 ...

  7. 迅速的说清楚rpc原理

    第一个问题是服务提供者进程如果被kill -9暴力杀死,不能主动调用srem命令怎么办? 这个时候服务列表中多了一个黑地址指向了不存在的服务而消费者完全不知道,这个时候服务中介就成了黑中介了.那该怎么 ...

  8. 转 Ubuntu16.04+QT4.8.7开发环境搭建

    Qt安装步骤1.安装g++以及依赖库 sudo apt-get install g++  sudo apt-get install g++-multilib libx11-dev libxext-de ...

  9. React 环境增加Redux ,React-Redux

    引入 Redux 的目的, 状态管理! React-Redux 就是完成一些粘合剂的作用. 简而化之的理解就是将数据放在store 中维护, 操作逻辑放在reducer中去写. 更功利的表达就是:  ...

  10. Windows 2012 安装 SQL Server 2012,.Net Framework 3.5安装不成的解决办法

    This behavior can also be caused by a system administrator who configures the computer to use Window ...