乐趣区

关于云原生:微服务性能分析|Pyroscope-在-Rainbond-上的实践分享

随着微服务体系在生产环境落地,也会随同着一些问题呈现,比方流量过大造成某个微服务应用程序的性能瓶颈、CPU 利用率高、或内存透露等问题。要找到问题的根本原因,咱们通常都会通过日志、过程再联合代码去判断根本原因。对于微服务宏大的业务,这必定会很耗时,而且也很难及时找到关键问题点。

本文将介绍一个 继续性能剖析平台 Pyroscope,它可能帮忙咱们疾速找到内存透露、CPU 利用率高的代码。

什么是 Pyroscope?

Pyroscope 是一个开源的继续性能剖析平台。它可能帮你:

  • 查找代码中的性能问题
  • 解决 CPU 利用率高的问题
  • 定位并修复内存透露
  • 理解应用程序的调用树
  • 跟踪随工夫的变动

Pyroscope 能够存储来自多个应用程序长期的剖析数据;能够一次查看多年的数据或独自查看特定的事件;较低的 CPU 应用;数据压缩效率高,磁盘空间要求低;快捷的 UI 界面;

Pyroscope 架构

Pyroscope 由两个次要组件撑持运行:Pyroscope ServerPyroscope Agent

Pyroscope Agent:记录并汇总您的应用程序始终在执行的操作,而后将该数据发送到 Pyroscope Server。反对多种语言,GO、Python、Ruby、eBPF、JAVA、Rust、PHP、NodeJS、.NET

Pyroscope Server:解决、聚合和存储来自代理的数据,以便在任何工夫范畴内疾速查问。片刻后能够查看剖析数据,并在任何工夫范畴内进行查问。

与 Rainbond 集成架构

1. 集成 Pyroscope Agent:

应用 Rainbond 插件的机制在微服务组件内装置 Pyroscope Agent 插件,该插件会将 pyroscope.jar 通过 javaagent 形式启动 java -javaagent:pyroscope.jar -jar app.jar

2. 依赖 Pyroscope Server:

将装置了 Pyroscope Agent 插件微服务组件都依赖至 Pyroscope Server。

实际步骤

本文将基于微服务框架 Pig 进行实际,步骤为:

  1. 部署微服务 Spring Cloud Pig,Gitee:https://gitee.com/log4j/pig
  2. 部署 Pyroscope Server
  3. 装置 Pyroscope Java Agent 插件并配置
  4. 建设微服务与 Pyroscope 之间的依赖关系
  5. Pyroscope 根本应用

Rainbond 部署请参阅文档 疾速装置

1. 部署微服务 Spring Cloud Pig

通过开源利用商店一键装置 Spring Cloud Pig,新增 -> 基于利用商店创立组件 -> 在开源利用商店中搜寻 SpringCloud-Pig 并装置到指定利用中。

2. 部署 Pyroscope Server

通过开源利用商店一键装置 Pyroscope Server,新增 -> 基于利用商店创立组件 -> 在开源利用商店中搜寻 Pyroscope 并装置到指定利用中。

3. 装置 Pyroscope Java Agent 插件并配置

  1. 插件 -> 从利用商店装置插件,搜寻 Pyroscope-Java-Agent 进行装置。
  1. 为每个微服务组件都开明插件,进入微服务组件 -> 插件 -> 开明插件 Pyroscope-Java-Agent 并更新组件。
  1. 为每个微服务组件都设置以下环境变量,可在组件内 -> 环境变量 -> 增加变量。也能够通过利用配置组为所有组件对立配置 JAVA_OPTS 环境变量,而 PYROSCOPE_APPLICATION_NAME 环境变量是惟一的,不可对立配置。
变量名 变量值 阐明
JAVA_OPTS -javaagent:/agent/pyroscope.jar Java agent 启动参数
PYROSCOPE_APPLICATION_NAME pig.auth 微服务模块名称

4. 建设微服务与 Pyroscope 之间的依赖关系

将所有微服务组件增加依赖连贯到 Pyroscope,切换到编排模式进行依赖关系建设,并更新或重启所有微服务组件使依赖关系失效。

5. Pyroscope 根本应用

拜访 Pyroscope 的 4040 对外服务端口,即可拜访 Pyroscope UI。

在 Single View 视图中,能够通过 Application 抉择服务。它能够显示某一段时间内的火焰图,也能够应用表格展现或者同时展现,火焰图能够看到微服务办法调用的性能指标。

在 Comparison View 视图中,能够抉择不同的时间段进行比拟,通过工夫线拖拽即可。

在 Diff View 视图中,能够进行两个时间段的差别比对,这通常在排查微服务的 CPU、内存透露时很无效。

最初

Pyroscope 还能够联合 Jaeger 一起应用,能够集成在 Jaeger UI 中,可参阅 Jaeger UI 集成


Rainbond 是一个云原生利用治理平台,外围 100% 开源、应用简略、不须要懂容器和 Kubernetes,反对治理多种 Kubernetes 集群,提供企业级利用的全生命周期治理。

退出移动版