本文将先容一个 「持续性能剖析平台 Pyroscope」,它能够帮助我们快速找到内存泄露、CPU利用率高的代码。
什么是 Pyroscope?Pyroscope 是一个开源的持续性能剖析平台。它能够帮你:
Pyroscope 可以存储来自多个运用程序长期的剖析数据;可以一次查看多年的数据或单独查看特定的事宜;较低的 CPU 利用;数据压缩效率高,磁盘空间哀求低;快捷的 UI 界面;

Pyroscope 由两个紧张组件支撑运行:「Pyroscope Server」 和 「Pyroscope 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 进行实践,步骤为:
支配微做事 Spring Cloud Pig,Gitee:https://gitee.com/log4j/pig支配 Pyroscope Server安装 Pyroscope Java Agent 插件并配置建立微做事与 Pyroscope 之间的依赖关系Pyroscope 基本利用Rainbond 支配请参阅文档 快速安装
1. 支配微做事 Spring Cloud Pig通过开源运用商店一键安装 Spring Cloud Pig,新增 -> 基于运用商店创建组件 -> 在开源运用商店中搜索 SpringCloud-Pig 并安装到指定运用中。
2. 支配 Pyroscope Server
通过开源运用商店一键安装Pyroscope Server,新增 -> 基于运用商店创建组件 -> 在开源运用商店中搜索 Pyroscope 并安装到指定运用中。
3. 安装 Pyroscope Java Agent 插件并配置插件 -> 从运用商店安装插件,搜索 Pyroscope-Java-Agent 进行安装。
为每个微做事组件都开通插件,进入微做事组件 -> 插件 -> 开通插件 Pyroscope-Java-Agent 并更新组件。为每个微做事组件都设置以下环境变量,可在组件内 -> 环境变量 -> 添加变量。也可以通过运用配置组为所有组件统一配置 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集群,供应企业级运用的全生命周期管理。