java 培训 SpringBoot 性能优化

本文探讨了SpringBoot性能优化的多个方面,包括使用Prometheus进行监控,利用Java生成火焰图分析瓶颈,以及通过Skywalking进行分布式追踪。此外,还介绍了HTTP优化技巧,如使用CDN、设置Cache-Control、减少域名请求、开启gzip等,并详细分析了Controller、Service和Dao层的优化策略,特别是Service层的分布式事务处理。文章提供了丰富的工具和实践建议,帮助提升SpringBoot应用的性能。
摘要由CSDN通过智能技术生成

SpringBoot 已经成为 Java 届的 No.1 框架,每天都在蹂躏着数百万的程序员们。当服务的压力上升,对 SpringBoot 服务的优化就会被提上议程。

1.有监控才有方向

在开始对 SpringBoot 服务进行性能优化之前,我们需要做一些准备,把 SpringBoot 服务的一些数据暴露出来。

比如,你的服务用到了缓存,就需要把缓存命中率这些数据进行收集;用到了数据库连接池,就需要把连接池的参数给暴露出来。

我们这里采用的监控工具是 Prometheus,它是一个是时序数据库,能够存储我们的指标。SpringBoot 可以非常方便的接入到 Prometheus 中。

创建一个 SpringBoot 项目后,首先,加入 maven 依赖。

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

<dependency>

<groupId>io.micrometer</groupId>

<artifactId>micrometer-registry-prometheus</artifactId>

</dependency>

<dependency>

<groupId>io.micrometer</groupId>

<artifactId>micrometer-core</artifactId>

</dependency>

然后,我们需要在 application.properties 配置文件中,开放相关的监控接口。

management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true

启动之后,我们就可以通过访问
http://localhost:8080/actuator/prometheus 来获取监控数据。

想要监控业务数据也是比较简单的。你只需要注入一个 MeterRegistry 实例即可。下面是一段示例代码:

@Autowired

MeterRegistry registry;

@GetMapping("/test")

@ResponseBody

public String test() {

registry.counter("test",

"from", "127.0.0.1",

"method", "test"

).increment();

return "ok";

}

从监控连接中,我们可以找到刚刚添加的监控信息。

test_total{from="127.0.0.1",method="test",} 5.0

这里简单介绍一下流行的 Prometheus 监控体系,Prometheus 使用拉的方式获取监控数据,这个暴露数据的过程可以交给功能更加齐全的 telegraf 组件

如图,我们通常使用 Grafana 进行监控数据的展示,使用 AlertManager 组件进行提前预警。这一部分的搭建工作不是我们的重点,感兴趣的同学可自行研究。下图便是一张典型的监控图,可以看到 Redis 的缓存命中率等情况。

2.Java 生成火焰图

火焰图是用来分析程序运行瓶颈的工具。在纵向,表示的是调用栈的深度;横向表明的是消耗的时间。所以格子的宽度越大,越说明它可能是一个瓶颈。

火焰图也可以用来分析 Java 应用。可以从 github 上下载 async-profiler 的压缩包 进行相关操作。

比如,我们把它解压到/root/目录。然后以 javaagent 的方式来启动 Java 应用。命令行如下:

java -agentpath:/root/b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾听铃的声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值