pyroscope代码级性能诊断分两步:一键docker启动服务端(localhost:4040访问ui),再按语言轻量接入客户端(如python/go几行代码),5分钟内生成cpu火焰图,支持内存、goroutine等多维度剖析。

安装配置 Pyroscope 实现代码级性能诊断,核心是两步:快速启动服务端 + 按语言接入客户端。整个过程不依赖复杂运维,本地开发环境 5 分钟内即可跑通火焰图。
一、一键启动 Pyroscope 服务端
推荐使用 Docker,避免编译和依赖冲突:
- 运行命令:docker run -d --name pyroscope -p 4040:4040 grafana/pyroscope:latest
- 服务启动后,直接访问 http://localhost:4040 即可打开 Web UI
- 无需额外配置存储或数据库,内置内存存储已满足初步分析需求
- 如需持久化,可挂载卷或对接 S3/GCS 等对象存储(生产环境建议)
二、按语言接入客户端(以 Python 和 Go 为例)
客户端只需几行代码或一个环境变量,不修改业务逻辑。
-
Python 应用:安装
pyroscope-io包,在入口文件(如main.py或app.py)顶部添加:
import pyroscope
pyroscope.configure(
application_name="my-web-app",
server_address="http://localhost:4040"
)
-
Go 应用:引入官方包,在
main()开头调用:
import "github.com/pyroscope-io/client/pyroscope"
func main() {
pyroscope.Start(pyroscope.Config{
ApplicationName: "my-go-service",
ServerAddress: "http://localhost:4040",
ProfileTypes: []pyroscope.ProfileType{pyroscope.ProfileCPU},
})
// 后续是原有逻辑
}
- 其他语言(.NET、Java、Rust、eBPF)均提供类似轻量集成方式,详见官方文档对应语言章节
三、验证与初探性能数据
启动应用后,等待 30 秒左右,刷新 Pyroscope UI:
- 左侧菜单出现你的 application_name,点击进入
- 默认展示 CPU 火焰图:X 轴为采样时间分布,Y 轴为调用栈深度,块宽度 = 该函数占用 CPU 时间比例
- 点击任意函数块,右侧自动定位到源码行(需确保编译/部署时保留调试符号或源码路径)
- 切换顶部时间范围(如 “Last 5m”),观察性能波动趋势
四、进阶:开启内存与 Goroutine 等剖析类型
默认只采集 CPU,但多数瓶颈来自内存分配或并发阻塞:
-
Python:在
configure()中添加profile_memory=True -
Go:扩展
ProfileTypes列表,例如加入pyroscope.ProfileAllocObjects(内存分配)、pyroscope.ProfileGoroutines(协程快照) -
.NET:启用
PYROSCOPE_PROFILING_ALLOCATION_ENABLED=1环境变量 - 所有类型数据均复用同一火焰图界面,仅需切换顶部指标下拉框











