SpringBoot性能优化

作者: 奇点一氪 | 来源:发表于2019-12-03 10:56 被阅读0次

    一、扫描优化

    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工具进行压测,然后对比分别使用两个容器的并发处理能力。

    相关文章

      网友评论

        本文标题:SpringBoot性能优化

        本文链接:https://www.haomeiwen.com/subject/fhfcgctx.html