当前位置: 首页 > article >正文

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


http://www.kler.cn/a/400930.html

相关文章:

  • EEG+EMG学习系列 (1) :一个基于小波的自动睡眠评分模型
  • Java-异步方法@Async+自定义分布式锁注解Redission例子
  • SpringBoot源码解析(四):解析应用参数args
  • 深度解读混合专家模型(MoE):算法、演变与原理
  • PyTorch——从入门到精通:PyTorch基础知识(张量)【PyTorch系统学习】
  • 鸿蒙实现 web 传值
  • React Native 全栈开发实战班 - 原生功能集成之权限管理
  • Qt 和 WPF(Windows Presentation Foundation)
  • 交易效率不打打折扣,遵循昂首平台优化策略
  • SLAM-evo 评估
  • webpack案例----pdd(anti-content)
  • 算法--“汽车加油”问题.
  • 如何解决JAVA程序通过obloader并发导数导致系统夯住的问题 | OceanBase 运维实践
  • sql专场练习(二)(16-20)完结
  • 目前区块链服务商备案支持的区块链技术类型
  • SpringBoot整合ELK使用详解
  • 【大语言模型】ACL2024论文-12 大型语言模型的能力如何受到监督式微调数据组成影响
  • Cookie 与 Session:差异剖析与应用实战
  • js实现导航栏鼠标移入时,下划线跟随鼠标滑动
  • 机器学习 线性回归 学习笔记
  • vue | computed vs watch
  • IPv6基础知识
  • 【景观生态学实验】实验二 景观类型分类
  • TSMC12nm工艺数字IC后端实现难点都有哪些?
  • PCL 三维重建 a-shape曲面重建算法
  • SpringMVC学习笔记(二)