微服务性能分析|Pyroscope|微服务性能分析|Pyroscope 在 Rainbond 上的实践分享
【微服务性能分析|Pyroscope|微服务性能分析|Pyroscope 在 Rainbond 上的实践分享】随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈、CPU利用率高、或内存泄漏等问题。要找到问题的根本原因,我们通常都会通过日志、进程再结合代码去判断根本原因。对于微服务庞大的业务,这必定会很耗时,而且也很难及时找到关键问题点。
本文将介绍一个 持续性能分析平台 Pyroscope,它能够帮助我们快速找到内存泄漏、CPU利用率高的代码。
什么是 Pyroscope?
Pyroscope 是一个开源的持续性能分析平台。它能够帮你:
- 查找代码中的性能问题
- 解决 CPU 利用率高的问题
- 定位并修复内存泄漏
- 了解应用程序的调用树
- 跟踪随时间的变化
Pyroscope 架构 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 基本使用
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集群,提供企业级应用的全生命周期管理。
推荐阅读
- Linux工具准备(基于CentOS的云服务器)
- 极客日报|iPhone14或仍有刘海,设计、芯片都不变;微信聊天对话框支持放大编辑;Android 13正式版发布|极客头条
- SQL|SQL SERVER数据库服务器CPU不能全部利用原因分析
- 云服务器|从业务场景分析腾讯云服务器选型最佳实践!
- JDK自带的检测虚拟机性能的工具
- 【拆书示范】亲,你还在一边做家务一边听微课吗()
- centos/windows服务器,Mysql数据库表结构损坏-已解决
- 你不知道的微营销干货经验心得
- 2022年谷歌Chrome等浏览器在线打开编辑保存微软Office/金山WPS的Word、Excel和PPT方案大全
- 微商代理什么产品好卖些什么产品最赚钱