即时性能分析工具Pyroscope

2021-08-06   出处:blog.wu-boy.com  作/译者:AppleBOY  

        当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常CPU冲到100%时,有时候也蛮难复制及找出关键问题点。本篇会介绍一套工具叫pyroscope,让开发者可以快速找到性能瓶颈的代码。之前也写了相关的性能瓶颈文章,可以参考看看『Go语言用pprof找出代码性能瓶颈』或『善用Go语言性能测试工具来提升执行效率』,上述两篇都是针对Go语言的性能分析文章,而pyroscope目前可以支持在Python,Ruby或Go的环境。底下笔者会针对Go环境做介绍。

什么是Pyroscope?

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

Pyroscope构架

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

        1. 低CPU使用率,不会影响既有平台

        2. 可储存好几年的数据,并且用10秒这么细的颗粒度查看数据

        3. 压缩储存数据,减少浪费硬盘空间

        构架只有分Server跟Agent而已,可以参考底下构架图,除了Go语言之外,Python跟Ruby App都是通过pyroscope指令启动相关app来监控系统性能。底下构架图来自官方站点

启动Pyroscope服务

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

        另一种可以用docker-compose启动

在Go里面安装agent

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

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

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

        通过画面可以快速找到是SQL或哪个函数执行很久

心得

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

        


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
156°|1562 人阅读|0 条评论

登录 后发表评论