【golang-技巧】-线上死锁问题排查-by pprof

1.背景

由于目前项目使用 cgo + golang 本地不能debug, 发生死锁问题,程序运行和期待不一致,通过日志排查可以大概率找到 阻塞范围,但是不能找到具体问题在哪里,同时服务器 通过k8s daemonset 部署没有更好的方式暴露端口 获取pprof web页面

想通过 go tool pprof 排查问题但是 由于mac 还要安装依赖软件 所以使用docker 实现问题排查

2.操作

# 1.生成pprof文件
curl http://localhost:6060/debug/pprof/goroutine > goroutine.pprof


# 2.复制文件到本地
kubectl cp <namespace>/<pod-name>:/filepath -c <containername> ./


# 3.本地mac启动 pprof-web
docker pull lovecho/pprof-web:latest

docker run --rm -it -p 8080:8080 lovecho/pprof-web:latest


# 4.查看浏览器,上传pprof文件

在这里插入图片描述

可以搜索方法关键字查询 执行逻辑 以及最终阻塞地方

3.结论

通过 docker + go pprof 实现排查 线程block 问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值