lazygit 如何用 -profile 采集 CPU 与内存 profile 并用 speedscope 或 pprof 分析

发布时间:2026/9/10 19:08:40
lazygit 如何用 -profile 采集 CPU 与内存 profile 并用 speedscope 或 pprof 分析 lazygit 如何用 -profile 采集 CPU 与内存 profile 并用 speedscope 或 pprof 分析【免费下载链接】lazygitsimple terminal UI for git commands项目地址: https://gitcode.com/GitHub_Trending/la/lazygit当 lazygit 出现 CPU 占用高或内存持续增长的问题时可以先复现该行为再通过 Go 内置的 pprof 机制把 profile 数据保存为文件最后用 speedscope 或go tool pprof打开分析。整个流程只需要两个终端一个运行 lazygit一个执行采集命令。用 -profile 启动 lazygit平时直接启动lazygit即可要采集 profile 时加上-profile命令行参数lazygit -profile该参数会让 lazygit 启动一个内置的 web 服务监听本机 6060 端口专门用于接收 profiling 请求实现见 pkg/app/entry_point.go服务地址为localhost:6060。启动后按平时使用 lazygit 的方式操作如果怀疑是某个操作导致资源占用高就先在 lazygit 里复现该操作再在另一个终端窗口执行下面的采集命令。采集 CPU profile在另一个终端窗口中运行curl -o cpu.out http://127.0.0.1:6060/debug/pprof/profile这会执行一次 CPU profile 并保存到cpu.out文件。默认采样时长为 30 秒。要修改采样时长通过seconds参数指定例如采样 60 秒curl -o cpu.out http://127.0.0.1:6060/debug/pprof/profile?seconds60采集内存 profile保存堆 profile记录从启动到现在为止分配的所有内存信息curl -o mem.out http://127.0.0.1:6060/debug/pprof/heap如果需要观察某段时间内内存的变化可以采集一个 delta profilecurl -o mem.out http://127.0.0.1:6060/debug/pprof/heap?seconds20这条命令会记录现在与 20 秒之后的内存使用差异也就是说它给你 20 秒时间在 lazygit 中执行想测量的那个操作然后再返回这段时间的内存增长数据。用 speedscope 查看 profile在浏览器中打开 speedscope.app文档写作时给出的地址是 https://www.speedscope.app/把上一步保存的 profile 文件cpu.out或mem.out拖进浏览器窗口即可加载数据的导航方式参考 speedscope 自身的使用文档。官方文档作者更推荐 speedscope理由是界面更友好、功能稍强。用 pprof 工具查看备选方案官方文档作者也提到偶尔会出现 speedscope 因某些原因无法加载 profile 文件的情况这时用 Go 自带的 pprof 工具作为备选。以cpu.out为例go tool pprof -http:8080 cpu.out该命令会启动一个本地 web 界面。默认显示的是 graph 视图官方文档作者认为其价值不大建议从 View 菜单中选择 Flame Graph能看到更直观的火焰图。采集过程中的注意点-profile服务监听在localhost:6060采集命令必须在 lazygit 以-profile参数运行的期间执行否则 curl 无法连接。CPU profile 默认 30 秒若目标操作耗时短可适当调小seconds若需要覆盖更长的工作流程则调大。delta 内存 profile 的seconds参数就是留给你的操作窗口时间窗口内要在 lazygit 中完成想测量的操作。完整的操作说明见 docs/dev/Profiling.md。当你在火焰图中定位到占用 CPU 或内存分配集中的函数路径后可以把具体行为反馈给项目维护者对于开发 lazygit 本身的同学profiling 也是优化性能问题时的常规起手步骤。【免费下载链接】lazygitsimple terminal UI for git commands项目地址: https://gitcode.com/GitHub_Trending/la/lazygit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考