一:背景 1. 讲故事 10月份星球里的一位老朋友找到我,说他们公司的程序在一个网红直播带货下给弄得无响应了,无响应期间有大量的 RabbitMQ 超时,寻求如何找到根源,聊天截图我就不发了. 既然无响应了,那必然是程序的大量线程被主动或者被动的挂起,朋友也很及时的从程序上抽了一管血下来,接下来就上 windbg 一起探究下到底发生了什么? 二:Windbg 分析 1. 线程们都怎么了 要想看所有线程,还是老命令 !t . 0:000> !t ThreadCount: 5221 Unstarte…
一:背景 1. 讲故事 这几个月经常被朋友问,为什么不更新这个系列了,哈哈,确实停了好久,主要还是打基础去了,分析 dump 的能力不在于会灵活使用 windbg,而是对底层知识有一个深厚的理解,比如:汇编,C, C++,Win32 Api,虚拟内存,Windows 用户态和内核态,这是我今年看的书给大家分享一下. 前段时候微信上有位朋友说他的程序出现了卡死,所有线程都不工作了,听起来还挺吓人的,截图如下: 接下来直接上 WinDbg 分析吧. 二:Windbg 分析 1. 卡死分析 既然说程序…
一:背景 1.讲故事 前段时间有位朋友微信找到我,说他生产机器上的 Console 服务看起来像是卡死了,也不生成日志,对方也收不到我的httpclient请求,不知道程序出现什么情况了,特来寻求帮助. 哈哈,一般来说卡死的情况在窗体程序(WinForm,WPF) 上特别多,在 Console,WebApi 中相对较少,既然找到我,那就上 WinDbg 分析吧. 二:WinDbg 分析 1. 程序真的卡死了吗 程序之所以能跑的梭梭响,全靠线程帮忙,如果玩不转可能就是线程上出了点什么问题,接下来使…
一:背景 1. 讲故事 这个月初,有位朋友wx上找到我,说他的api过一段时间后,就会出现只有请求,没有响应的情况,截图如下: 从朋友的描述中看样子程序是被什么东西卡住了,这种卡死的问题解决起来相对简单,接下来我就用 windbg 给大家分析一下. 二:Windbg 分析 1. Request 请求正在干嘛? 既然朋友说 api 有 request 无 response,那怎么去验证朋友的话对不对呢? 我们都知道 .NET 用 HttpContext 来表示一个请求,言外之意就是可以去抓 Htt…
一:背景 1. 讲故事 前段时间遇到了好几起关于窗体程序的 进程加载锁 引发的 程序卡死 和 线程暴涨 问题,这种 dump 分析难度较大,主要涉及到 Windows操作系统 和 C++ 的基础知识,所以有必要简单整理和大家分享一下,上 windbg 说话. 二:WinDbg 分析 1. 主线程此时在做什么 窗体程序的卡死,入口分析点在 主线程 上,使用 ~0s; k 命令即可. 0:000> ~0s; k ntdll!NtWaitForSingleObject+0x14: 00007ffc`6…
一:背景 1. 讲故事 前段时间遇到了一个难度比较高的 dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上 WinDBG 说话. 二:WinDbg 分析 1. 为什么会卡死 既然程序卡死,那肯定是被冻住了,所以看下主线程此时在做什么. 0:000:x86> !clrstack OS Thread Id: 0xe20 (0) Child SP IP Call Site 0034d5e8 000bc4b8 [HelperMetho…
一:背景 1. 讲故事 前段时间有位朋友微信上找到我,说它的程序出现了卡死,让我帮忙看下是怎么回事? 说来也奇怪,那段时间求助卡死类的dump特别多,被迫训练了一下对这类问题的洞察力 ,再次声明一下,我分析 dump 是免费的,没有某软高额的分析费用,你要问我图什么,图技术的精进. 回到正题,卡死类的问题分析入口点在于主线程此时在做什么,导致它不能处理自己的任务队列的原因是各种各样的,接下来上 windbg 分析一下. 二:WinDbg 分析 1. 主线程此时在做什么 看主线程很简单,直接一个…
以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节部分加以描述,并且可能需要对算法本身有一定了解的朋友才能明白我所描述的一些过程了. 那这个系列的开篇,我们以Canny边缘检测算法为头吧. 相关参考资料: 1.Canny边缘检测算法的实现. 2.OpenCV(五)——超细节的Canny原理及算法实现 3.OpenCV 之 边缘检测 4.Opencv…
CDH安装的ZK,三个节点,基本都是默认配置,一直用得正常,今天出现问题,客户端连接超时6倍时长,默认最大会话超时时间是一分钟.原因分析:1.首先要确认网络正确.确认时钟同步.2.查看现有的配置,基本都是默认配置 JVM配置是1G 有 2g的,不一样3.查看dataDir目录,du -sh .发现已经有五百多M具体原因不确定,没有看到日志中出现的问题,分析可能是因为随着时间的推移,ZOOKEEPER中的数据信息量增大,启动后因为需要同步的数据量和初始同步时间过短简(initLimit=10)等原…
一:背景 1. 前言 大概有2个月没写博客了,不是不想写哈…