当前位置:崇尚新闻网 > 访谈 > 正文

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

导语:通过性能监控,发现在线服务器cpu的一个核心的占用率达到了100%,这是我们的一个核心服务造成的。幸运的是,因为我们的服务过程是由多个相同的工作(线程)调度来承担的,所以除了高CPU占用率之外,它对服务没有任何影响。随着上一次我们找到了吃IO的罪犯,这次我们要追捕潜伏在群里的间谍,这就更惊心动魄了! 系统环境 图片 系统环境 使用top命令,很容易找到谁的CPU使用率最高。 图片 Top命令定

通过性能监控,发现在线服务器cpu的一个核心的占用率达到了100%,这是我们的一个核心服务造成的。幸运的是,因为我们的服务过程是由多个相同的工作(线程)调度来承担的,所以除了高CPU占用率之外,它对服务没有任何影响。随着上一次我们找到了吃IO的罪犯,这次我们要追捕潜伏在群里的间谍,这就更惊心动魄了!

系统环境

图片

系统环境

使用top命令,很容易找到谁的CPU使用率最高。

图片

Top命令定位最高的中央处理器进程

以我们的业务流程(imDevServer)为例,为什么这个产品是一个《渗透者》?因为这是一个多线程的进程,我们需要知道,实际占用cpu的最小单位是线程,所以一定是一个或者几个线程占用CPU过多造成的。使用top -H -p pid命令检查进程中每个线程占用的CPU百分比。

图片

用于查看进程中线程占用的中央处理器百分比的命令

如上图所示,我们可以看到id为8863的线程具有最高的cpu利用率。好了,现在我们只需要找到他偷的中央处理器。虽然这小子嘴硬,但是我们有完善的审讯流程,不怕他不说话。第一个是strace -T -r -c -p pid命令

图片

Strace -T -r -c -p pid命令

它的功能是检查系统调用和花费的时间。虽然epoll_wait占用了很多通话时间,但是属于正常的阻塞通话。让我们把pstack pid弄出来。

图片

Pstack pid已超时

可以看到每个线程的调用栈,找到已经被发现占用最高cpu的线程,再看它的调用栈,很容易看出哪个步骤逻辑上导致了busy循环,然后用trace -p tid看到线程的调用过程,然后定位代码,修复bug,找回被盗的CPU。

来源网络,侵权联系人删除

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表崇尚新闻网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.csxming.com/fangtan/401761.html 感谢你把文章分享给有需要的朋友!
上一篇:沙漠骆驼歌词 小学生版《沙漠骆驼》,超励志! 下一篇: 进出口权办理流程 广州公司如何办理进出口权,需要什么流程?