应用服务器 CPU 暴高事故分析
有2个月没写博客了,不是不想写哈??,关注公号的朋友应该知道我这两个月一直都在翻译文章,前前后后大概100篇左右吧,前几天看公号的 常读用户 降了好几十,心疼哈,还得回过神来继续写! 2. 讲故事 上周给 武汉同济 做项目升级,本以为一切顺利,结果捅娄子了,第二天上午高峰期运维说生产上两台 应用服务器 cpu 被打满,影响到所有客户使用,造成了大面积瘫痪,真尬尴,得先让运维抓一个 dump 下来再重启网站,还好,老板人可以,没有问责 ??。 二:CPU 爆高问题分析 1. 找思路 分析 dump,没什么比 windbg 更专业了,不过分析 dump 我还是比较拿手的,那怎么分析呢?最简单粗暴的做法就是看每一个线程当时都在做什么,进而推测一下就 八九不离十 了。 2. 查看所有线程栈 首先用 !t 和 !tp 看一下当前程序的 线程 和 线程池 的整体概况。从上面的输出大概可以看到如下几点信息:
总的来看,系统已经高负荷,不堪重负了,接下来的一个疑问就来了,所有的线程都被打满而且线程池中还有大量等待处理的任务在排队,现有的线程都在干嘛呢?难道不处理吗? 2. 查看所有线程的托管线程栈
既然现存的有 60 个线程,那我就使用 ~ *e !clrstack 命令看看所有的线程都在干嘛? (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |