一次服务器CPU占用率高的定位分析

一次服务器CPU占用率高的定位分析,第1张

一次服务器CPU占用率高的定位分析

情况:根据特性监管,发现分发网络服务器cpu占用率早已达到100%,且是人人某重点服务项目所致。由于每个人的服务项目进程都是由几个相同的工人(线程)生产调度来承担的,所以除了CPU占用高之外,对服务项目没有任何伤害。有了之前大家都在找吃木卫一的罪犯,这次要抓埋伏在队伍里的奸细,更刺激了!

软件自然环境

使用top命令,可以非常容易地找到谁拥有最大的CPU。

以人人的业务流程(imDevServer)为例。为什么这个产品是渗透者?因为是多线程进程,要知道其实占用cpu的最小单位是线程,所以一定是一个或多个线程占用CPU过多造成的。top-H-ppid指令,用于检查进程中每个线程的CPU百分比。

如图所示,我们可以看到id为8863的线程的cpu利用率最高。嗯,要是现在大家都能找他偷的cpu就好了。这个臭小子虽然嘴严,但是我们有完善的审讯程序,不怕他不招供。第一个是strace-T-r-c-ppid指令。

它的功能是查询系统进程和花费的时间。虽然epoll_wait占用了大量的激活时间,但是属于正常的阻塞激活。

然后让pstackpid出来。

您可以看到每个线程启用的局部变量,查找已经找到最大CPU的线程,然后查看它启用的局部变量。很容易看出繁忙循环是从逻辑上引起的。

然后应用trace-ptid查看线程激活的全过程,然后准确定位代码,恢复bug,找到被盗的cpu。

续集:其实作为一个程来说,我觉得我更大的快乐不是程序的飘飘欲仙的编写,而只是找一些“高端”的bug。也许就像某些特警沉迷于破案一样。这是我对技术的热爱。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/784379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存