开源持续性能剖析平台 Pyroscope

k8s技术圈

共 1779字,需浏览 4分钟

 ·

2021-04-24 21:13

性能剖析是动态代码分析的一种形式,你可以在应用运行时捕获应用的特征,然后使用这些特征信息确定如何使应用更快、更高效。但是对于线上生产环境来说很难捕获到现场,所以捕获线上 profile 的时候有一定难度,Google 在论文《Google-Wide Profiling: A Continuous Profiling Infrastructure for Data Centers》(https://research.google/pubs/pub36575/) 中介绍了内部的 Profilling 系统,简称 GWP,GWP 能够持续地对跨数据中心的基础设施进行 profilling,获取包括了栈调用,硬件事件,堆 profile,内核事件等等信息,并进行后续的数据分析,这个就是现在比较热门的持续性能剖析。

介绍

持续性能剖析是指对在生产环境中执行的应用进行性能剖析,此方法可缓解为生产环境开发准确的预测负载测试和基准的需求。与 metrics 类似,pprof 也是通过 HTTP 端点进行暴露,那么如果像 Prometheus 一样,每隔一段时间定期去抓取程序的 profiles 并存储在 TSDB 中,后续出现问题了再去查询那个时间段的 profiles,就能够很方便地定位到问题,这个就是基本的实现思路。

我们今天要介绍的 Pyroscope 就是这样的一个开源持续性能剖析平台,号称调试性能问题仅需一行代码,目前已经有 3.4k 🌟🌟。

演示地址:https://demo.pyroscope.io/

下图显示了使用 pyroscope 运行的一个典型应用程序的基本架构:

特性:

  • 可以存储多个应用程序长时间的剖析数据
  • 可以一次查看长时间的数据,也可以单独查看特定的事件
  • 低 CPU 开销
  • 数据压缩效率高
  • 友好的用户界面
  • 支持 Go、Ruby、Python 以及 Linux eBPF

使用

只需要下面几条命令即可测试使用 pyroscope:

# install pyroscope
brew install pyroscope-io/brew/pyroscope

#
 start pyroscope server:
pyroscope server

#
 in a separate tab, start profiling your app:
pyroscope exec python manage.py runserver # If using Python
pyroscope exec rails server               # If using Ruby

#
 If using Pyroscope cloud add flags for server address and auth token
# pyroscope exec -server-address "https://your_company.pyroscope.cloud" -auth-token "ps-key-1234567890" python manage.py runserver

仓库地址:https://github.com/pyroscope-io/pyroscope

浏览 63
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报