开源持续性能剖析平台 Pyroscope
共 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