持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
pyroscope 简单说明
基于 Go 的开源实时性能分析平台。仅需在源码中添加几行代码,pyroscope 就能帮你找出代码的性能问题、CPU 使用过高的原因,还有丰富的图表和调用树展示。支持 Go、Python、Ruby 编程语言,中文说明
基于docker安装的脚本命令
PYROSCOPE_CONTAINER_Name="pyroscope"
PYROSCOPE_PORT="4040"
docker rm -f $PYROSCOPE_CONTAINER_Name
docker run \
-d \
--name $PYROSCOPE_CONTAINER_Name \
-p $PYROSCOPE_PORT:4040 \
pyroscope/pyroscope:latest server
基于golang语言的引入(更多可参考其官方文档)
func main() {
initPyroscope()
'''your code'''
}
/**
* @Description: 初始化 pyroscope 监控
*/
func initPyroscope() {
pyroscope.Start(pyroscope.Config{
ApplicationName: "test-v1.0.0",
// replace this with the address of pyroscope server
ServerAddress: "http://pyroscope-server:4040",
// you can disable logging by setting this to nil
Logger: nil,
// by default all profilers are enabled,
// but you can select the ones you want to use:
ProfileTypes: []pyroscope.ProfileType{
pyroscope.ProfileCPU,
pyroscope.ProfileAllocObjects,
pyroscope.ProfileAllocSpace,
pyroscope.ProfileInuseObjects,
pyroscope.ProfileInuseSpace,
},
})
}
代码启动之后,访问目标地址 127.0.0.1:4040 ,此处以本地环境为例进行演示
可以看到项目运行过程中的火焰图,获取到的数据包括以下监控信息(常见的 cpu、内存等信息)
此外,diff view 还可以对比项目不同版本之间的差异,个人感觉此功能较为靠谱,可以比对线上版本与灰度版本的差异,从而尽早的发现问题并给予解决
注:此处因为是两个项目所以可比性较差,线上环境使用时要注意下性能使用,毕竟收集pprof信息也是需要耗费少量性能的。
PS:其官方文档比较详细,个人比较喜欢其文档风格。
【golang开发】,欢迎👊相互交流~