pprof火焰图排查问题小计

文章讲述了在Go服务中遇到的算子入参丢失问题,通过排查发现是由于中间算子执行超时。使用pprof工具生成火焰图帮助定位到数据解析环节的性能瓶颈,优化后显著改善了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

前情提要:一个go服务使用了公司内部的流式框架,将业务拆分成算子,算子间通过Input和output进行参数传递
线上一个go模块会有偶现的非预期错误,通过日志发现是出现了算子入参的丢失,首先怀疑是不是自己的框架打开方式错了,排查后发现不是;再排查是不是框架问题,这怎么可能,要是内部框架有这种问题,厂内早爆炸了;
后通过补充日志,观察到是中间某个算子执行超时了,导致出现了上述问题
你问我,为啥代码会超时? 我只想说,不可能 绝对不可能
但是问题终归要解决,于是开始排查程序的性能问题

解决过程

mac : sudo yum install graphviz + dot -c

  1. go tool pprof http://localhost:8020/debug/pprof/profile?seconds=1500
  2. 上述命令结束后会产出一个文件
  3. go tool pprof -http=IP:PORT 你自己的文件路径
  4. 浏览器会打开一个火焰图,看下哪些是业务的代码;火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。
  5. 如果有平顶,那就尝试优化吧朋友
    官网:更全的信息参考这里:::https://pkg.go.dev/net/http/pprof

排查结论

存量代码在算子中的耗时主要集中在数据解析时取巧的使用了json序列化和反序列化,简单字符串的拼接使用了fmt.sprintf
优化后长尾耗时数量明显下降明显

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴塞罗那的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值