大概有11天没发文了,真的不是因为懒,本想前几天抽空写,不知道为啥最近求助的朋友比较多,一天都能拿到2-3个求助dump,晚上回来就是一顿分析,有点意思的是大多朋友自己都分析了几遍或者公司多年的牛皮藓问题,真的是心太累,不过也好,累那是走上坡路. 再回到正题,在一个月前,有位朋友wx找到我,他最近也在学习如何分析dump,可能经验不是很丰富,分析不下去了,截图如下: 虽然dump中的问题千奇百怪,但如果要汇成大类,还是有一些规律可循的,比如:gc频繁触发,大量锁 等等,详细汇总可以观摩我的星球,…
一:背景 1. 讲故事 前几天有位朋友wx求助,它的程序CPU经常飙满,没找到原因,希望帮忙看一下. 这些天连续接到几个cpu爆高的dump,都看烦了,希望后面再来几个其他方面的dump,从沟通上看,这位朋友表现的好惨,可能实际更惨,那既然找到我了,我就尽最大能力帮他找到幕后真凶,话不多说,上 windbg. 二: windbg 分析 1. 查看托管线程 因为线程都是靠cpu养着,所以从线程上入手也是一个很好的思路,要想查看程序的所有托管线程,可以使用 !t 命令. 0:000> !t Thre…
一:背景 1. 讲故事 前段时间有位朋友在微信上找到我,说他的 web 系统 cpu 运行一段时候后就爆高了,让我帮忙看一下是怎么回事,那就看吧,声明一下,我看 dump 是免费的,主要是锤炼自己技术,没有某软工程师高额的技术分析费. 闲话不多说,我们上 windbg 说话. 二:WinDbg 分析 1. CPU 真的爆高吗 是否真的爆高,我们得自己先验证下,使用 !tp 命令看一下即可. 0:065> !tp CPU utilization: 81% Worker Thread: Total:…
一:背景 1.讲故事 前段时间有位朋友微信找到我,说他的程序出现了 CPU 爆高,帮忙看下程序到底出了什么情况?图就不上了,我们直接进入主题. 二:WinDbg 分析 1. CPU 真的爆高吗? 要确认是否真的爆高,可以使用 !tp 观察. 0:000> !tp CPU utilization: 96% Worker Thread: Total: 36 Running: 36 Idle: 0 MaxLimit: 32767 MinLimit: 16 Work Request in Queue:…
一:背景 1. 讲故事 已经连续写了几篇关于内存暴涨的真实案例,有点麻木了,这篇换个口味,分享一个 CPU爆高 的案例,前段时间有位朋友在 wx 上找到我,说他的一个老项目经常收到 CPU > 90% 的告警信息,挺尴尬的. 既然找到我,那就用 windbg 分析呗,还能怎么办. 二: windbg 分析 1. 勘探现场 既然说 CPU > 90%,那我就来验证一下是否真的如此? 0:359> !tp CPU utilization: 100% Worker Thread: Total:…
一:背景 1. 讲故事 这是6月中旬一位朋友加wx求助dump的故事,他的程序 cpu爆高UI卡死,问如何解决,截图如下: 在拿到这个dump后,我发现这是一个关于机械臂的MRS程序,哈哈,在机械臂这种智能机器人领域居然还有 .NET 的用武之地,有点超出我的认知哈,不知道把员工当兄弟的大强子仓库里可有 .NET 控制的几台机械臂 . 关于界面卡死的问题我这里就不讨论了,只讨论这个cpu爆高的问题如何解决,毕竟追这个系列的朋友都被前面那些各种 内存泄漏,内存爆涨 弄倦了,换个口味也挺好. 二:…
一:背景 1. 讲故事 上个月有个老朋友找到我,说他的站点晚高峰 CPU 会突然爆高,发了两份 dump 文件过来,如下图: 又是经典的 CPU 爆高问题,到目前为止,对这种我还是有一些经验可循的. 抓 2-3 个 dump 第一个:有利于算两份 dump 中的线程时间差,从而推算最耗时线程. 第二个:有时候你抓的dump刚好线程都处理完了,cpu 还未真实回落,所以分析这种dump意义不大,我是吃了不少亏. 优先推测是否为 GC 捣鬼 现在的码农都精怪精怪的,基本不会傻傻的写出个死循环,绝大部…
一:背景 1. 讲故事 前几天有位朋友加 wx 抱怨他的程序在高峰期总是莫名其妙的cpu爆高,求助如何分析? 和这位朋友沟通下来,据说这问题困扰了他们几年,还请了微软的工程师过来解决,无疾而终,应该还是没找对微软的大佬... 关于程序CPU爆高的问题,老读者应该知道我都写了好几篇了,基本上归为两类: GC 触发 大量 lock 锁 少部分就是各种莫名其妙的问题了,无法一一列举 ,既然朋友找到我了,我得想办法给他解决,话不多聊,上 windbg. 二: windbg 分析 1. 查看同步块表 遇到…
一:背景 1. 讲故事 前几天有位朋友wx求助,它的程序内存经常飙升,cpu 偶尔飙升,没找到原因,希望帮忙看一下. 可惜发过来的 dump 只有区区2G,能在这里面找到内存泄漏那真有两把刷子...,所以我还是希望他的程序内存涨到 5G+ 的时候再给我看看,既然内存看不了,那就看看这个偶尔飙升的CPU是个啥情况?老办法,上windbg说话. 二: windbg 分析 1. CPU 到底是多少 要想查看这个快照生成时机器的cpu使用率,可以使用 !tp 命令. 0:033> !tp CPU uti…
一:背景 1. 讲故事 这个月初,一位朋友加微信求助他的程序出现了 CPU 偶发性爆高,希望能有偿解决一下. 从描述看,这个问题应该困扰了很久,还是医院的朋友给力,开门就是 100块 红包 ,那既然是偶发性爆高,人工不行,还得用 procdump 自动抓,用 procdump -ma -s 5 -n 2 -c 70 w3wp 埋伏好,几天后如愿生成了两个dump,太妙了,接下来就用 windbg 分析吧. 二:Windbg 分析 1. 真的是cpu爆高吗 一切只相信数据,这里用 !tp 看一下此…