自学内容网 自学内容网

【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 问题


原文地址:https://blog.csdn.net/DemoD_/article/details/143770084

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!