微服务框架(5)----基于SpringBoot2.0版本框架-基于SpringBoot2.0版本框架-性能优化

SpringBoot的性能优化问题

  1. JVM的参数调优
  2. 扫包优化(比较重要)
  3. 默认Tomcat容器修改Undertow,吞吐量Undertow(吞吐量8000)比Tomcat(吞吐量5000)要好

扫包优化

  • 扫包优化不属于运行优化,而是属于启动优化
  • @SpringBootApplication注解等同于@ComponentScan+@EnableAutoConfiguration+@Configuration
  • @ComponentScan默认会扫描同级包以及其下的子包;我们会默认遍历包下面的所有的类,这时候就会影响到启动的项目的时间(也就是说默认扫描的类太多了,可能会扫到没有必要扫的包增加了其要扫描的类,速度慢

原则上讲就是:
(1)去掉@SpringBootApplication
(2)自己加上@ComponentScan+@EnableAutoConfiguration+@Configuration
(3)自己在@ComponentScan上加上要扫描的范围,

  • 如@ComponentScan(basePackages={“com.xiyou.controller”, “com.xiyou.service”})

JVM参数调优

  • 影响的是整体的运行效果,而不是启动效果

  • 吞吐量指的是每秒的响应量,默认情况下每秒完成的请求数量

  • 调优策略:
    (1)初始化堆内存(-Xms)和最大的堆内存(-Xmx)一定要相同,避免频繁的垃圾回收
    (2)尽量减少GC的回收次数
    (3)尽量在新生代回收,别在老年代回收,减少Full GC等

  • SpringBoot如何配置参数调优?
    (1)内部启动参数调优(直接在启动的时候,通过设置JVM的参数进行设置,在idea中进行设置)
    在这里插入图片描述

  • JVM默认4个G

  • 也不是说-Xmx越大越好,-Xmx越大,程序虚拟机栈空间越少,增加-Xmx增加了堆的大小,减少了栈内存空间。

  • 对于高并发,创建对象不多的项目,可以降低Xmx的配置, 结合Xms 设定堆范围 -Xms256m -Xmx512(对象存储在堆中)

  • 对于低并发,创建对象多的项目,(数据处理型的) 可以适当提高,Xmx(对象存储在堆中)

(2)外部启动参数调优(通过命令传递)

  • 工程先打包
  • java -jar 运行程序的时候,加入设置JVM命令,如:
    java -server -Xms32m -Xmx32m -jar XXXX.jar
  • 可以通过jconsole进行查看JVM的内存情况

将Servlet容器默认的Tomcat服务器改为Undertow

  • 默认情况下,Spring Boot使用Tomcat容器作为内嵌的Servlet容器
  • 可以将Web容器切换到Undertow来提高应用的性能,Undertow是一个采用Java开发的灵活的高性能Web服务器,提供包括阻塞和基于NIO的非阻塞机制,是红帽的开源产品。
  • 要想改为Undertow,首先移除Tomcat容器:
       <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

利用< exclusion>进行移除,再添加undertow

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值