专栏首页运维之美推荐一款开源即时性能分析工具 Pyroscope

推荐一款开源即时性能分析工具 Pyroscope

当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常 CPU 达到 100% 时,有时候也很难复制及找出关键问题点。

本篇文章,我们会介绍一套工具叫 Pyroscope,让开发者可以快速找到性能瓶颈的代码。Pyroscope 目前可以支持 Python, Ruby 或 Go 的环境。本文笔者会针对 Go 环境做介绍。

什么是 Pyroscope?

Pyroscope 是一套开源的性能即时监控平台,简单的 Server 及 Agent 架构,让开发者可以轻松监控代码性能,不管你要找 10 秒或几分钟内的性能数据,都可以快速的即时呈现,开发者也不用在意装了此监控会造成任何性能上的负担。Pyroscope 背后的储存采用 Badger 这套 Key-Value 数据库,性能上是非常好的。目前只支持 3 种语言 (Python, Ruby 及 Go) 未来会预计支持 NodeJS。假设您还没引入任何性能分析工具或平台,那 Pyroscope 会是您最好的选择。

Pyroscope 架构

如果你有打算找性能分析工具平台,Pyroscope 提供了三大优势,让开发者可以放心使用

  • 低 CPU 使用率,不会影响既有平台
  • 可储存好几年的资料,并且可用 10 秒细颗粒度查看资料
  • 压缩储存资料,减少浪费硬盘空间
  • 架构只有分 Server 和 Agent,除了 Go 语言之外,Python 跟 Ruby App 都是透过 pyroscope 指令启动相关 app 来监控系统效能。

Pyroscope 架构图

启动 Pyroscope 服务

启动方式有两种,第一是直接用 docker 指令启动。

$ docker run -it -p 4040:4040 pyroscope/pyroscope:latest server

另一种可以用 docker-compose 启动。

---
services:
  pyroscope:
    image: "pyroscope/pyroscope:latest"
    ports:
      - "4040:4040"
    command:
      - "server"

安装 Agent

在 Go 语言中使用

本篇用 Go 语言当作示例,先 import package

import "github.com/pyroscope-io/pyroscope/pkg/agent/profiler"

接著在 main.go 写入底下代码即可:

profiler.Start(profiler.Config{
    ApplicationName: "simple.golang.app",
    ServerAddress:   "http://pyroscope:4040",
})

其中 http://pyroscope 可以换成自定义的 hostname 即可,接着打开上述网址就可以看到性能监控的画面了。

通过画面,我们可以快速找到是 SQL 或哪个函式执行时间长。

在 Python 和 Ruby 语言中使用

# If using Python
$ pyroscope exec python manage.py runserver 

# If using Ruby
$ pyroscope exec rails server    

心得

这套工具相当方便,在 Go 语言虽然可以用 pprof 快速找到问题,但是难免还是需要手动的一些地方才可以查出性能瓶颈,有了这套平台,就可以将全部 App 都进行监控,当使用者有任何问题,就可以快速透过 Pyroscope 查看哪些代码出了问题。

本文转载自:「 小恶魔 」,原文:http://t.cn/A6c0G3dm,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

本文分享自微信公众号 - 运维之美(Hi-Linux),作者:吴柏毅

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 即时性能分析工具 Pyroscope

    当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常 CPU 达到 100% 时,有时候也很难复制及找出关键...

    常见_youmen
  • 推荐一款 Kubernetes 应用性能分析工具 Kubectl Flame

    性能分析是分析应用程序性能来改进代码质量的常用方法,最流行的可视化性能分析方法是生成火焰图。

    iMike
  • 不一样的软件们——GitHub 热点速览 v.21.10

    创意,是程序员的一个身份代名词,一样的软件有不一样的玩法。比如,你可以像用 git 一样操作一个 SQL 数据库,dolt 就是这样的数据库。又比如,你可以只写...

    HelloGitHub
  • 开源持续性能剖析平台 Pyroscope

    性能剖析是动态代码分析的一种形式,你可以在应用运行时捕获应用的特征,然后使用这些特征信息确定如何使应用更快、更高效。但是对于线上生产环境来说很难捕获到现场,所以...

    我是阳明
  • 前端利器,6 款开源 Web 性能优化辅助工具推荐

    Web 性能优化是一个老生常谈的话题,也是前端页面开发十分重要的部分。当页面加载速度越慢,用户流失的概率就越大,性能和交互直接影响用户体验。

    王小婷
  • 一款开源且具有交互视图界面的实时 Web 日志分析工具!

    在 Linux 操作系统下,分析日志文件是一件非常头疼的事情,它记录了很多日志,对于大多数的新手及系统管理员不知该如何下手进行分析,除非你在分析日志方面有足够的...

    杰哥的IT之旅
  • 别找了,你最需要的公众号运营工具都在这!

    除了功能齐全,学以致用很重要。为大家推荐一些实用的微信运营工具,例如数据分析工具、排版、图片、H5页面、二维码、等相关工具,都经过亲测使用。

    用户6102055
  • 【数据挖掘】互联网和金融,在数据挖掘上究竟存在什么样的区别?

    ---- 在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个问题,“互联网和金融,在数据挖掘上,究竟存在什么样的区别”。在对这...

    陆勤_数据人网
  • 互联网和金融,在数据挖掘上究竟存在什么区别?

    作者在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个问题,“互联网和金融,在数据挖掘上,究竟存在什么样的区别”。在对这个问题...

    华章科技
  • 一个资深数据人对数据挖掘解读

    在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个问题,“互联网和金融,在数据挖掘上,究竟存在什么样的区别”。在对这个...

    小莹莹
  • 【数据分析】互联网和金融,在数据挖掘上究竟存在什么区别?

    一、数据挖掘的层次 一直想整理下对数据挖掘不同层次的理解,这也是这两年多的时间里面,和很多金融领域、互联网做数据相关工作的小伙伴,聊天交流的一些整理和归纳。大概...

    陆勤_数据人网
  • Cloudera正在重建机器学习方法

    大数据文摘
  • 一个资深数据人对 数据挖掘 的解读

    数据分析网 http://www.afenxi.com/post/7348 在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个...

    机器学习AI算法工程
  • 互联网和金融 在数据挖掘上究竟存在什么区别?

    在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个问题,“互联网和金融,在数据挖掘上,究竟存在什么样的区别”。在对这个问题的摸...

    CDA数据分析师
  • 【数据分析】互联网和金融,在数据挖掘上究竟存在什么区别?

    一、数据挖掘的层次 一直想整理下对数据挖掘不同层次的理解,这也是这两年多的时间里面,和很多金融领域、互联网做数据相关工作的小伙伴,聊天交流的一些整理和归纳。大概...

    小莹莹
  • 这些工具是你身边程序员的武器

    作为一名程序开发人员,不管你使用哪门语言开发都有很多可以选择的集成开发环境IDE(Integrated Development Environment),

    Rookie
  • 【数据挖掘】互联网和金融 在数据挖掘上究竟存在什么区别?

    文|周学春 在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个问题,“互联网和金融,在数据挖掘上,究竟存在什么样的区别”。在对...

    陆勤_数据人网
  • 数据挖掘:层次性和时髦性

    在银行做了两年的数据分析和挖掘工作,较少接触互联网的应用场景,因此,一直都在思考一个问题,“互联网和金融,在数据挖掘上,究竟存在什么样的区别”。在对这个问题的摸...

    小莹莹
  • 推荐 | 10个好用的Web日志安全分析工具

    首先,我们应该清楚,日志文件不但可以帮助我们溯源,找到入侵者攻击路径,而且在平常的运维中,日志也可以反应出很多的安全攻击行为。

    辞令

扫码关注云+社区

领取腾讯云代金券